Может ли задача Albacore nuspec автоматически разрешать все зависимости?

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

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


person Stephan    schedule 08.03.2012    source источник


Ответы (2)


Я понимаю, что это старый вопрос, но, поскольку на него нет ответа, это может помочь кому-то найти то же самое. В настоящее время я работаю над некоторыми 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
comment
Что-нибудь еще по этому поводу? Я открыл суть и задачу, чтобы отслеживать, как это становится действительно прочным, и перешел в Albacore. - person Anthony Mastrean; 28.09.2012
comment
Каков тип параметра project, который имеет свойство FilePath? - person Anthony Mastrean; 28.09.2012
comment
Проект — это класс, который я определил для представления данных, связанных с проектом .net, который вы можете увидеть в примере кода в сути. - person Mitchell Lee; 27.11.2012

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

person Anthony Mastrean    schedule 27.09.2012
comment
Гладкий. Мне нужно сделать nugets из github.com/DotNetIO/DotNetIO, мы могли бы попробовать. там, наверное? - person Henrik; 09.10.2012
comment
Позвольте мне попробовать выпустить его в функциональной ветке или как отдельный драгоценный камень надстройки или что-то в этом роде? - person Anthony Mastrean; 09.10.2012
comment
В конце концов, у меня есть беспокойство по поводу этой функции, Я хотел бы обсудить. - person Anthony Mastrean; 09.10.2012