Einige Zusammenhänge:
Ich habe das Tutorial zur Verwendung von NuGet befolgt , ohne Pakete mit einigem Erfolg festzuschreiben . Nachdem Sie dieses NuGet-Problem durch manuelles Hinzufügen <RestorePackages>
und <Import ...>
für die Datei nuget.targets umgangen hatten, funktionierten die Dinge.
Nachdem ich das Repository mit Mercurial geklont habe, wurde beim Erstellen der folgende Fehler angezeigt:
'C: \ ... \ Visual Studio 2010 \ Projects \ MyProject \ .nuget \ nuget.exe' konnte nicht gefunden werden.
Dies ist sinnvoll, da ich aufgrund meines Ignoriermusters die exe-Datei nicht einchecken konnte. Aus dieser verwandten SO-Frage folgerte ich, dass es nicht ungewöhnlich ist, diese Datei in der Versionskontrolle zu haben (oder?), Aber ich würde es wirklich vorziehen, NuGet.exe nicht zur Versionskontrolle zu verpflichten, wenn ich helfen kann.
Frage: Gibt es eine bequeme Möglichkeit, das Einchecken in NuGet.exe zu verhindern?
Ich habe Google-Fu ausprobiert, die Dokumentation überflogen und mit der Datei NuGet.targets herumgespielt, bisher kein Glück. Es scheint vorzuziehen, wenn ich nur dynamisch auf die NuGet.exe der bestimmten Umgebung verweisen könnte, in der die Lösung erstellt wird.
Ich weiß, dass ich einfach die exe-Datei hinzufügen könnte, aber ich würde lieber wissen, ob es andere Möglichkeiten gibt, damit umzugehen, oder warum es keine praktikablen Alternativen gibt.
Update:
Die Datei nuget.targets enthält einige relevante XML-Dateien:
<!-- 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>
Ich bin mit der Funktionsweise von .targets-Dateien nicht vertraut, aber dies scheint in etwa dem zu entsprechen, wonach ich suche. Mit meinem Cowboy-Codierung auf I Hut versucht , das zu ändern , false
um true
in dem DownloadNuGetExe Elemente, aber das hat nicht wie erwartet (mit oder ohne die Bedingung Attribut).