我意识到这是一个老问题,但鉴于它没有答案,这可能会帮助寻找相同事物的人。我目前正在处理一些 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 任务。