Un peu de contexte :
J'ai suivi le tutoriel sur l'utilisation de NuGet sans commettre les paquets avec un certain succès. Après avoir travaillé autour ce problème NuGet en ajoutant manuellement <RestorePackages>
et un <Import ...>
pour le fichier nuget.targets, tout fonctionnait.
Cependant, une fois que j'ai cloné le référentiel avec Mercurial, j'ai obtenu l'erreur suivante lors de la construction :
Impossible de trouver ' C:\...\Visual Studio 2010 \Projects\MyProject\.nuget\nuget.exe '
C'est logique, car mon schéma d'ignorance m'empêchait de vérifier le fichier exe. De cette question relative au SO J'en ai déduit qu'il n'est pas rare d'avoir ce fichier dans le contrôle de version (ou est-ce le cas ?), mais en réalité j'aurais préférer ne pas commettre NuGet.exe au contrôle de version si je peux l'aider.
Pregunta: Existe-t-il un moyen pratique d'éviter d'avoir à vérifier dans NuGet.exe ?
J'ai essayé d'utiliser Google, de parcourir la documentation et de manipuler le fichier NuGet.targets, sans succès jusqu'à présent. Il me semble préférable de pouvoir pointer dynamiquement vers le fichier NuGet.exe de l'environnement particulier qui construit la solution.
Je sais que je pourrais simplement ajouter le fichier exe, mais je préférerais savoir s'il existe d'autres moyens de gérer cela ou savoir pourquoi il n'y a pas d'alternatives viables.
Mise à jour :
Le fichier nuget.targets contient quelques fichiers xml pertinents :
<!-- only (relevant) parts of the xml shown below -->
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">false</DownloadNuGetExe>
...
<UsingTask TaskName="DownloadNuGet" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<Task>
<Code Type="Fragment" Language="cs">
<![CDATA[
try {
OutputFilename = Path.GetFullPath(OutputFilename);
Log.LogMessage("Downloading latest version of NuGet.exe...");
WebClient webClient = new WebClient();
webClient.DownloadFile("https://nuget.org/nuget.exe", OutputFilename);
return true;
}
catch (Exception ex) {
Log.LogErrorFromException(ex);
return false;
}
]]>
</Code>
</task>
</UsingTask>
Je ne suis pas familier avec le fonctionnement des fichiers .targets, mais cela semble correspondre à ce que je recherche. Avec mon chapeau de codage de cow-boy, j'ai essayé de modifier le fichier false
a true
dans l'élément DownloadNuGetExe, mais cela n'a pas fonctionné comme prévu (avec ou sans l'attribut condition).
0 votes
Vous pouvez également supprimer le dossier .nuget et modifier le fichier du projet, puis lancer l'application.