Albacore nuspec任务能否自动解析所有依赖项

本文关键字:依赖 任务 nuspec Albacore | 更新日期: 2023-09-27 18:27:19

Albacore nuspec任务能否解决解决方案所需的所有依赖关系?当我有几个依赖关系不断变化的项目时,要想让rakefile保持最新,需要付出很多努力。这能自动化吗?

desc 'create the nuget package'
nuspec do |nuspec|
   nuspec.id = 'myprojectid'
   nuspec.version = '1.2.3'
   nuspec.authors = 'Jon Jones'
   nuspec.description = 'my-project is a collection of utilties'
   nuspec.title = 'my-project'
   nuspec.dependency <magic here>
end

手动解决方案是遍历包文件并手动解决此问题。有人自动写了什么吗?

Albacore nuspec任务能否自动解析所有依赖项

我意识到这是一个老问题,但由于它没有答案,这可能会帮助人们寻找同样的东西。我目前正在做一些Rake任务,以传统/自主的方式进一步自动化nuspec文件的创建,所以我稍后会用最终解决方案更新这篇文章。

不过,为了回答手头的问题,这里有一个小ruby函数,它将从解决方案中给定项目的packages.config文件中提取依赖项。

def GetProjectDependencies(project)
    path = "#{File::dirname project.FilePath}/packages.config"
    packageDep = Array.new
    if File.exists? path
        packageConfigXml = File.read("#{File::dirname project.FilePath}/packages.config")
        doc = REXML::Document.new(packageConfigXml)
        doc.elements.each("packages/package") do |package|
            dep = Dependency.new
            dep.Name = package.attributes["id"]
            dep.Version = package.attributes["version"]
            packageDep << dep
        end
    end
    packageDep
end

使用的Dependency类:

class Dependency
    attr_accessor :Name, :Version
    def new(name, version)
        @Name = name
        @Version = version
    end
end

此方法接收一个"项目"实例,并从该项目的package.config文件中获取依赖项/版本。

正如我所说,我很快就会发布一个更完整的解决方案,但这对任何需要的人来说都是一个很好的起点。

编辑:很抱歉我花了这么长时间才发布它的最终版本,但这里有一个指向要点的链接,其中包含我目前在许多项目中使用的示例代码。

https://gist.github.com/4151627

基本上,我将数据封装在一个"Project"类中,并从package.config中填充依赖项。此外,它还添加了来自项目间引用的依赖项(解析项目文件)。类/逻辑就在那里,还有一个nuspec任务示例。

可以肯定的是,Albacore项目中目前没有这样做。看到Mitchell的解决方案得到调整并可能推出会很有趣。我将把代码转移到要点,打开一个"问题"(增强),并在侧面进行处理:)