Je veux exécuter un référentiel NuGet local/interne . Je pense que j'ai compris comment "réutiliser" les packages NuGet existants en les incluant dans un projet factice utilisant NuGet et en scannant le fichier du package pour récupérer mon _ localement mis en cache .nupkg
fichiers , mais ...
.nupkg
) à partir d'un projet, incluant automatiquement toutes les dépendances dll
et pas seulement celles saisies via NuGet?Plus précisément:
.dll
fichiers/autres projets <- c'est la partie manquante.nupkg
D'après ce que j'ai trouvé, vous êtes censé faire des choses comme
.csproj
fichier à ajouter <BuildPackage>true</BuildPackage>
pour inclure les dépendances.nuspec
fichier et manuellement listez vos dépendances ( similaire? )nuget pack
Sur ton .nuspec
fichierMais tout est manuel, ce qui est stupide. Même les solutions semi-automatiques sont toujours maladroites ou semi-manuelles:
.nuspec
templates - ne semble pas inclure de dépendances, juste des métadonnéespack de nugets via build-event (étape # 5), que vous devez ajouter manuellement à chaque projet, et il a ses propres caprices :
"$(SolutionDir).nuget\NuGet.exe" pack "$(ProjectPath)" -Properties Configuration=Release
move /Y *.nupkg "$(TargetDir)"
Je vais me contenter de quelque chose qui crée automatiquement un .nuspec
manifeste à partir des références du projet. Ensuite, théoriquement, + l'événement de génération nuget peut être cumulé dans un package build-project/nuget, ce que je veux vraiment voir.
Votre point # 3 ( Ajoutez des références à divers fichiers .dll/autres projets <- c'est la partie manquante ) contient vraiment deux problèmes différents: (1 ) ajouter des références à divers fichiers dll et (2) ajouter des références à d'autres projets dans la même solution.
Le numéro (2) ici a obtenu un support supplémentaire à partir de NuGet 2.5 . Vous pouvez ajouter une option pour inclure des références à d'autres projets dans la même solution lors de la création d'un package NuGet pour un projet:
nuget pack projectfile.csproj -IncludeReferencedProjects
Si projectfile.csproj
fait référence à tout autre projet de votre solution qui est également exposé en tant que packages NuGet, les packages NuGet de ces projets seront ajoutés en tant que dépendances. S'il fait référence à des projets dans votre solution qui ne s'exposent pas en tant que packages NuGet, leurs DLL seront incluses dans ce package NuGet.
En ce qui concerne (1), si vous vous trouvez souvent à ajouter des DLL à vos projets qui ne sont pas disponibles en tant que packages NuGet, vous pouvez simplement créer vos propres packages NuGet (internes) avec ces fichiers. Si vous ajoutez ensuite ces DLL en tant que package NuGet au lieu des fichiers directement, ce package NuGet sera une dépendance dans le package NuGet de votre projet.
Pour les autres Googleurs, vous pouvez l'utiliser si vous utilisez le fichier NuGet.targets pour exécuter NuGet Pack:
<Target Name="PrePackage" BeforeTargets="BuildPackage">
<PropertyGroup>
<BuildCommand>$(BuildCommand) -IncludeReferencedProjects</BuildCommand>
</PropertyGroup>
</Target>
Regarde ça!
La solution que j'ai trouvée est une extension pour Visual Studio: https://visualstudiogallery.msdn.Microsoft.com/fbe9b9b8-34ae-47b5-a751-cb71a16f7e96/view/Reviews
Vous ajoutez simplement un nouveau projet appelé Nuget Package NuGet Package
Ensuite, vous ajoutez des projets intéressants à des références et à BOOOM !! Toutes les dépendances et répertoires de fichiers sont automatiquement ajoutés. Si vous souhaitez modifier les données NuSpec, cliquez avec le bouton droit sur le projet et accédez à Propriétés, puis modifiez ce que vous voulez. NuSpec et nupkg générés seront dans le dossier obj de votre nouveau projet. J'espère que ça aide;).