Может ли задача Albacore nuspec разрешить все зависимости автоматически? - PullRequest
3 голосов
/ 08 марта 2012

Может ли задача 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

Ручным решением было бы просмотреть файлы пакетов и решить их вручную. Кто-нибудь написал что-нибудь автоматизированное?

Ответы [ 2 ]

3 голосов
/ 16 июля 2012

Я понимаю, что это старый вопрос, но, поскольку у него нет ответа, это может помочь кому-то искать то же самое.В настоящее время я работаю над некоторыми задачами 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

ThisМетод принимает экземпляр «проекта» и извлекает зависимости / версии из файла package.config для этого проекта.

Как я уже говорил, я скоро опубликую более полное решение, но это хорошоотправная точка для всех, если они нуждаются в этом.

РЕДАКТИРОВАТЬ: Извините, что я занял много времени, чтобы опубликовать окончательную версию этого, но вот ссылка на суть, содержащую образец кода яВ настоящее время я использую несколько проектов.

https://gist.github.com/4151627

По сути, я оборачиваю данные в класс "Project" и заполняю зависимости из package.config.В качестве бонуса он также добавляет зависимости от межпроектных ссылок (анализирует файл проекта).Здесь есть классы / логика, а также пример задачи nuspec.

1 голос
/ 28 сентября 2012

Конечно, в проекте Albacore нет ничего, что могло бы сделать это прямо сейчас. Было бы интересно увидеть, как решение Митчелла настроено и, возможно, запущено. Я собираюсь переместить код в суть , открыть « проблема » (улучшение) и работать на нем сбоку:)

...