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一种手动解决方案是检查包文件并手动解决此问题。有没有人写了一些自动化的东西?
发布于 2012-07-16 06:03:51
我知道这是一个古老的问题,但由于它没有答案,这可能会对正在寻找相同东西的人有所帮助。我目前正在做一些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和使用的依赖类:
class Dependency
attr_accessor :Name, :Version
def new(name, version)
@Name = name
@Version = version
end
end此方法接受一个“项目”实例,并从该项目的package.config文件中获取依赖项/版本。
正如我所说的,我将很快发布一个更完整的解决方案,但这对任何需要它的人来说都是一个很好的起点。
EDIT:很抱歉,我花了这么长时间才发布这篇文章的最终版本,但这里有一个指向要点的链接,其中包含我目前在许多项目中使用的示例代码。
https://gist.github.com/4151627
基本上,我将数据包装在一个“项目”类中,并从package.config填充依赖项。作为奖励,它还添加了来自项目间引用的依赖项(解析项目文件)。类/逻辑就在那里,还有一个示例nuspec任务。
https://stackoverflow.com/questions/9619053
复制相似问题