Я понимаю, что это старый вопрос, но, поскольку на него нет ответа, это может помочь кому-то найти то же самое. В настоящее время я работаю над некоторыми Rake Tasks для дальнейшей автоматизации создания файлов 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 для этого проекта.
Как я уже сказал, я скоро опубликую более полное решение, но это хорошая отправная точка для тех, кто в ней нуждается.
EDIT: Извините, что мне потребовалось так много времени, чтобы опубликовать окончательную версию этого, но вот ссылка на суть, содержащую пример кода, который я сейчас использую для ряда проектов.
https://gist.github.com/4151627
По сути, я оборачиваю данные в класс «Проект» и заполняю зависимости из package.config. В качестве бонуса он также добавляет зависимости от межпроектных ссылок (анализирует файл проекта). Там есть классы/логика, а также пример задачи nuspec.
person
Mitchell Lee
schedule
15.07.2012