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
.

手动解决方案是通过包文件进行通过手动解决。有没有人写过任何自动化的东西?

有帮助吗?

解决方案

我意识到这是一个古老的问题,但看到它没有答案,这可能有助于有人寻找同样的事情。我目前正在努力以传统/自主方式进一步自动化创建NUSPEC文件,因此我将稍后使用最终解决方案更新这篇文章。 要在手头上回答问题,这是一个小的Ruby函数,它将在解决方案中将依赖性拉出依赖项。

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文件中抓取依赖项/版本。

正如我所说,我会尽快发布一个更完整的解决方案,但如果他们需要它,这是一个很好的起点。

编辑:很抱歉我花了很长时间才张贴这个问题,但这是一个包含我当前使用的示例代码的GIST的链接。

https://gist.github.com/4151627

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

其他提示

要肯定的是,阿尔巴冷的项目中没有任何东西可以在现在这样做。看到Mitchell的解决方案调整并可能滚入,这将是有趣的。我将要将代码移动到一个gist ,打开“问题”(增强),并在其上工作侧:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top