2016-07-05 1 views
0

Pour une bibliothèque commune que j'utilise très souvent pour tous les types de projets, je configure un serveur de nuget. Pendant un moment j'ai publié manuellement le paquet nuget comme:Nuget Packaging échoue après l'avoir automatisé dans VSTS

nuget pack .\ProjectFolder\CommonProjectName.csproj -Symbols -Build -Properties Configuration=Release 

et j'ai poussé ce paquet manuellement vers le serveur de nuget.

Maintenant, je veux automatiser cette publication à l'aide VSTS Construire vNext comme décrit dans ce blogitem: http://www.codewrecks.com/blog/index.php/2015/09/26/publishing-a-nuget-package-to-nugetmyget-with-vso-build-vnext/

J'utilise le même fichier Nuspec comme avant:

<?xml version="1.0"?> 
    <package > 
    <metadata> 
     <id>Common Library</id> 
     <version>1.0.0.0</version> 
     <title>Library Title</title> 
     <authors>...</authors> 
     <owners>...</owners> 
     <requireLicenseAcceptance>false</requireLicenseAcceptance> 
     <description>...</description> 
     <releaseNotes>...</releaseNotes> 
     <copyright>Copyright 2016</copyright> 
     <tags>...</tags> 
     <dependencies> 
     <dependency id="EntityFramework" version="6.1.3" /> 
     <dependency id="log4net" version="2.0.4" /> 
     <dependency id="Microsoft.AspNet.Mvc" version="5.2.3" /> 
     <dependency id="Microsoft.AspNet.Razor" version="3.2.3" /> 
     <dependency id="Microsoft.AspNet.WebPages" version="3.2.3" /> 
     <dependency id="Microsoft.Web.Infrastructure" version="1.0.0.0" /> 
     </dependencies> 
    </metadata> 
</package> 

Maintenant, après l'automatisation i obtenir l'erreur suivante messages:

Description: L'assembly 'bin \ Release \ CommonLibrary.dll' ne se trouve pas dans le dossier 'lib' et ne sera donc pas ajouté comme référence lorsque le package est installé dans un projet. Solution: Déplacez-le dans le dossier 'lib' s'il doit être référencé. Problème: Assemblage en dehors du dossier lib. Je lis la section conventions sur le site de nuget, mais comment puis-je me conformer automatiquement à ces conventions? En d'autres termes, comment obtenir la DLL construite et référencée au bon endroit sur mon buidcontroller.

Merci pour l'aide,

Meilleures salutations, Luuk Krijnen

supplémentaire: après avoir téléchargé le package NuGet via FTP mon code source complet wel Als mes sources compilées sont ajoutées au paquet dans un arbre comme mon code source d'origine. Donc, mon dll compilé est à l'intérieur de dossier \ Bin \ Release \

Répondre

0

Ajout d'une section de fichiers au fichier Nuspec ajoutant une cible semble la solution.

<?xml version="1.0"?> 
    <package > 
    <metadata> 
     <id>Common Library</id> 
     <version>1.0.0.0</version> 
     <title>Library Title</title> 
     <authors>...</authors> 
     <owners>...</owners> 
     <requireLicenseAcceptance>false</requireLicenseAcceptance> 
     <description>...</description> 
     <releaseNotes>...</releaseNotes> 
     <copyright>Copyright 2016</copyright> 
     <tags>...</tags> 
     <dependencies> 
     <dependency id="EntityFramework" version="6.1.3" /> 
     <dependency id="log4net" version="2.0.4" /> 
     <dependency id="Microsoft.AspNet.Mvc" version="5.2.3" /> 
     <dependency id="Microsoft.AspNet.Razor" version="3.2.3" /> 
     <dependency id="Microsoft.AspNet.WebPages" version="3.2.3" /> 
     <dependency id="Microsoft.Web.Infrastructure" version="1.0.0.0" /> 
     </dependencies> 
    </metadata> 
    <files> 
     <file src="<TARGET SPECIFIC FILE.DLL>" target="lib" /> 
     <file src="<TARGET SPECIFIC FILE.PDB>" target="lib" /> 
     ... 
    </files> 
</package>