¿Puede la tarea de Albacore Nuspec resolver todas las dependencias automáticamente?

StackOverflow https://stackoverflow.com//questions/9619053

  •  09-12-2019
  •  | 
  •  

Pregunta

¿Puede la tarea de Albacore Nuspec resolver todas las dependencias necesarias para una solución?Cuando tengo varios proyectos con dependencias cambiantes, se necesita mucho esfuerzo para mantener al día de RakeFile.¿Se puede automatizar esto?

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

Una solución manual sería pasar por los archivos de paquetes y resolver esto a mano.¿Alguien ha escrito algo automatizado?

¿Fue útil?

Solución

Me doy cuenta de que esta es una pregunta antigua, pero al ver que no tiene una respuesta, esto podría ayudar a alguien a buscar lo mismo. Actualmente estoy trabajando en algunas tareas de rastrillo para automatizar aún más la creación de archivos NUSPEC de una manera convencional / autónoma, por lo que actualizaré este post más adelante con la solución final.

Para responder a la pregunta en cuestión, aquí hay una pequeña función de rubí que retirará las dependencias del archivo Paquetes.config para un proyecto dado en la solución.

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

y la clase de dependencia utilizada:

class Dependency
    attr_accessor :Name, :Version

    def new(name, version)
        @Name = name
        @Version = version
    end
end

Este método lleva a una instancia de "proyecto", y agarra la dependencia / versiones del archivo PAQUETE.CONFIG para ese proyecto.

Como dije, publicaré una solución más completa pronto, pero este es un buen punto de partida para cualquier persona si lo necesitan.

Editar: Lo siento, me tomó mucho tiempo publicar la versión final de esto, pero aquí hay un enlace a la GIST que contiene el código de muestra que actualmente está utilizando para una serie de proyectos.

https://gist.github.com/4151627

Básicamente, envuelvo los datos en una clase de "proyecto" y rellené las dependencias de Package.config. Como bono, también agrega dependencias de las referencias de interprojectas (analiza el archivo de proyecto). Las clases / lógica están ahí, así como una tarea de Nuspec de muestra.

Otros consejos

Para estar seguro, no hay nada en el proyecto Albacore que hace eso ahora mismo.Sería interesante ver la solución de Mitchell sintonizada y tal vez enrollado. Voy a mover el código a una gana , abre un " problema " (mejora) y trabaja en ello en elLADO :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top