Может ли задача Nuspec Albacore автоматически разрешила все зависимости?
Вопрос
Может ли задача albacore 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
.
Ручное решение будет проходить через файлы пакетов и разрешить это вручную.Кто-нибудь написал что-нибудь автоматизированное?
Решение
Я понимаю, что это старый вопрос, но видит, как у него нет ответа, это может помочь кому-то искать то же самое. В настоящее время я работаю над некоторыми задачами грабля, чтобы дополнительно автоматизировать создание файлов 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 для этого проекта.
Как я уже сказал, я опубликую более полное решение в ближайшее время, но это хорошая отправная точка для всех, если им это нужно.
Редактировать: Извините, что мне так много времени, чтобы опубликовать окончательную версию этого, но вот ссылка на гейст, содержащий код образца, в настоящее время я использую для ряда проектов. .
https://gist.github.com/4151627
В основном я обернутую данные в «проекте» классах и заполните зависимости от Package.config. В качестве бонуса он также добавляет зависимости от ссылок интерфейса (анализируют файл проекта). Классы / логика там, а также образец задачи NUSPEC.
Другие советы
Убедитесь, что в проекте Albacore нет ничего, что делает это прямо сейчас.Было бы интересно увидеть решение Митчелла настроили и, возможно, перевернуты. Я собираюсь переместить код на цик/ a>, Откройте « Проблема » (Улучшение) и работать над ним насторона :)