C# Albacore nuspec任务能否自动解决所有依赖关系?

C# Albacore nuspec任务能否自动解决所有依赖关系?,c#,rake,albacore,nuspec,C#,Rake,Albacore,Nuspec,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 = '

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
desc“创建nuget包”
nuspec do | nuspec|
nuspec.id='myprojectid'
nuspec.version='1.2.3'
nuspec.authors='Jon Jones'
nuspec.description='我的项目是一组实用程序'
nuspec.title='我的项目'
nuspec.dependency
结束

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

我知道这是一个老问题,但鉴于它没有答案,这可能有助于寻找同样的东西。我目前正在进行一些Rake任务,以传统/自主的方式进一步自动化nuspec文件的创建,因此我稍后将用最终解决方案更新本文

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
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
不过,为了回答眼前的问题,这里有一个小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
此方法接收一个“project”实例,并从该项目的package.config文件中获取依赖项/版本

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

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


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

可以肯定的是,Albacore项目中目前没有这样做的。看到米切尔的解决方案得到调整,也许会被采纳,这将是一件有趣的事情。我将把代码移动到,打开一个“”(增强),并在旁边处理:)

还有其他相关内容吗?我已经打开了一个gist和一个问题来跟踪这个越来越坚实的问题,并转移到了Albacore中。参数
project
的类型是什么,它有一个
FilePath
属性?project是我定义的一个类,用于表示与.net项目相关的数据,您可以从gist.Smooth中的示例代码中看到。我有一个需要使nugets脱离,我们可以在那里尝试,也许?让我试着在一个功能分支中发布它,或者作为一个单独的附加gem或其他什么?我已经了解了这个功能,我想讨论一下。