3

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

手动解决方案是检查包文件并手动解决此问题。有没有人写过自动化的东西?

4

2 回答 2

3

我意识到这是一个老问题,但鉴于它没有答案,这可能会帮助寻找相同事物的人。我目前正在处理一些 Rake 任务,以进一步以传统/自主的方式自动创建 nuspec 文件,因此稍后我将使用最终解决方案更新这篇文章。

不过,要回答手头的问题,这里有一个小红宝石函数,它将为解决方案中的给定项目从 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

并且使用的依赖类:

class Dependency
    attr_accessor :Name, :Version

    def new(name, version)
        @Name = name
        @Version = version
    end
end

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

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

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

https://gist.github.com/4151627

基本上,我将数据包装在“项目”类中,并从 package.config 填充依赖项。作为奖励,它还添加了来自项目间引用的依赖项(解析项目文件)。类/逻辑在那里,以及一个示例 nuspec 任务。

于 2012-07-15T22:03:51.100 回答
1

可以肯定的是,目前 Albacore 项目中没有任何东西可以做到这一点。看到 Mitchell 的解决方案得到调整并可能会推出会很有趣。我将把代码移到一个要点,打开一个“问题”(增强),然后在旁边工作 :)

于 2012-09-27T21:32:41.630 回答