一些背景信息:
我已经按照使用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文件,但是我更想知道是否还有其他方法可以解决这个问题,或者知道为什么没有可行的替代方法。
更新:
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元素,但这并没有按预期方式工作(有或无的状态属性)。