Некоторый контекст:
Я последовал за учебником по использованию NuGet без каких-либо пакетов с некоторым успехом. После обхода этой проблемы NuGet, вручную добавив <RestorePackages>
и <Import ...>
для файла nuget.targets, которые работали.
Однако, как только я клонировал репозиторий с Mercurial, я получил следующую ошибку при создании:
Невозможно найти "C: \...\Visual Studio 2010\Projects\MyProject \.nuget\nuget.exe '
Это имеет смысл, потому что мой шаблон игнорирования помешал мне проверить файл exe. Из этого связанного вопроса SO я предположил, что это не редкость иметь этот файл в управлении версиями (или это?), Но на самом деле я бы предпочел не зафиксируйте NuGet.exe до контроля версий, если я могу помочь.
Вопрос: Есть ли удобный способ предотвратить необходимость в NuGet.exe?
Я пробовал Google-fu, просматривал документацию и возился с файлом NuGet.targets, пока не повезло. Кажется предпочтительным, если бы я мог просто динамически указывать на NuGet.exe конкретной среды, которая строила решение.
Я знаю, что могу просто добавить exe файл, но я бы предпочел узнать, есть ли другие способы справиться с этим или узнать, почему нет жизнеспособных альтернатив.
Update:
Файл nuget.targets содержит некоторый соответствующий xml:
<!-- 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>
Я не знаком с работой файлов .targets, но это похоже на то, что я ищу. С моей шляпой ковбойского кодирования я попытался изменить false
на true
в элементе DownloadNuGetExe, но это не сработало, как ожидалось (с атрибутом условия или без него).