La tâche Albacore Nuspec peut-elle résoudre toutes les dépendances automatiquement?
Question
La tâche Albacore Nuspec peut-elle résoudre toutes les dépendances nécessaires pour une solution?Lorsque j'ai plusieurs projets avec des dépendances changeantes, il faut beaucoup d'efforts pour garder le filet de râteau à jour.Peut-il être automatisé?
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
Une solution manuelle serait de passer par les fichiers de paquets et de la résoudre à la main.Quelqu'un a-t-il écrit quoi que ce soit automatisé?
La solution
Je me rends compte que c'est une ancienne question, mais voyant que cela n'a pas de réponse, cela pourrait aider quelqu'un à la recherche de la même chose. Je travaille actuellement sur certaines tâches de Rake pour automatiser davantage la création de fichiers NUSPEC de manière conventionnelle / autonome, je vais donc mettre à jour ce message plus tard avec la solution finale.
Pour répondre à la question à portée de main cependant, voici une petite fonction rubis qui tirera des dépendances hors du fichier de packages.Config pour un projet donné dans la solution.
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
et la classe de dépendance utilisée:
class Dependency
attr_accessor :Name, :Version
def new(name, version)
@Name = name
@Version = version
end
end
Cette méthode prend dans une instance "projet" et attrape les dépendances / versions du fichier package.config pour ce projet.
Comme je l'ai dit, je posterai une solution plus complète bientôt, mais c'est un bon point de départ pour quiconque s'ils en ont besoin.
edit: Désolé, il m'a fallu si longtemps pour poster la version finale de cela, mais voici un lien vers le GIST contenant le code de l'échantillon que je suis actuellement en train d'utiliser pour un certain nombre de projets.
https://gist.github.com/4151627
Fondamentalement, j'enveloppe les données dans une classe "projet" et peupler des dépendances de package.config. En tant que bonus, il ajoute également des dépendances des références interprojecteurs (analyse du fichier de projet). Les classes / logiques sont là, ainsi qu'un exemple de tâche NUSPEC.
Autres conseils
Pour être sûr, il n'y a rien dans le projet Albacore qui le fait maintenant.Il serait intéressant de voir la solution de Mitchell à l'écoute et peut-être déployée dans. Je vais déplacer le code à Un gist , ouvrir un " problème " (amélioration) et travailler sur lecôté :)