Domanda

L'attività AlbaCore NUSPEC ha risolto tutte le dipendenze necessarie per una soluzione?Quando ho diversi progetti con le mutevoli dipendenze, ci vuole molto sforzo per mantenere aggiornato il rakefile.Può essere automatizzato?

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 soluzione manuale sarebbe quella di passare attraverso i file dei pacchetti e risolverlo a mano.Qualcuno ha scritto qualcosa automatizzato?

È stato utile?

Soluzione

Mi rendo conto che questa è una vecchia domanda, ma vedendo come non ha una risposta, questo potrebbe aiutare qualcuno a cercare la stessa cosa. Attualmente sto lavorando a alcuni compiti rake per automatizzare ulteriormente la creazione di file di NUSPEC in modo convenzionale / autonomo, quindi aggiornerò questo post più tardi con la soluzione finale.

Per rispondere alla domanda a portata di mano, ecco una piccola funzione rubino che tirerà le dipendenze dal file dei pacchetti.config per un determinato progetto nella soluzione.

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
.

e la classe di dipendenza utilizzata:

class Dependency
    attr_accessor :Name, :Version

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

Questo metodo prende un'istanza "progetto" e afferra la dipendenza / versioni dal file Package.config per quel progetto.

Come ho detto, pubblicherò presto una soluzione più completa, ma questo è un buon punto di partenza per chiunque se ne avessero bisogno.

Modifica: Scusa mi ci è voluto così tanto tempo per pubblicare la versione finale di questo, ma ecco un link con il gist contenente il codice di esempio che sto attualmente utilizzando per un numero di progetti. .

https://gist.github.com/4151627

Fondamentalmente, avvolgo i dati in una classe "Project" e popolano le dipendenze da pacchetti.config. Come bonus, aggiunge anche dipendenze dai riferimenti di interproject (Parses il file del progetto). Le classi / logiche sono lì, così come un compito di NUSPEC di esempio.

Altri suggerimenti

Per essere sicuro, non c'è niente nel progetto AlbaCore che lo fa adesso.Sarebbe interessante vedere la soluzione di Mitchell sintonizzata e forse laminata. Ho intenzione di spostare il codice in un gist , Apri un "<< problema " (miglioramento) e lavora su di esso sulSide :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top