gpt4 book ai didi

visual-studio - 防止需要将 NuGet.exe 添加到源代码管理

转载 作者:行者123 更新时间:2023-12-03 05:22:42 25 4
gpt4 key购买 nike

一些背景:
我已经关注了tutorial on using NuGet without committing packages并取得了一些成功。周围工作后this NuGet issue通过手动添加<RestorePackages>和一个 <Import ...>对于 nuget.targets 文件,一切正常。

但是,当我使用 Mercurial 克隆存储库后,在构建时出现以下错误:

Unable to locate 'C:\...\Visual Studio 2010\Projects\MyProject\.nuget\nuget.exe'

这是有道理的,因为我的忽略模式阻止我 checkin exe 文件。来自 this related SO question我推断将此文件纳入版本控制并不罕见(或者是吗?),但实际上,如果可以的话,我宁愿不将 NuGet.exe 提交到版本控制。 p><小时/>

问题:是否有方便的方法来防止需要 checkin 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 文件的工作原理,但这似乎符合我正在寻找的内容。戴上牛仔编码帽,我尝试更改 falsetrue在 DownloadNuGetExe 元素中,但这没有按预期工作(带或不带条件属性)。

最佳答案

刚刚检查:nuget.targets 是一个 msbuild 文件。你走对了路,在:

<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">false</DownloadNuGetExe>

将值更改为 true:

<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">true</DownloadNuGetExe>

但是在此之后您必须重新启动 Visual Studio 或重新加载解决方案(请参阅注释)才能生效。

关于visual-studio - 防止需要将 NuGet.exe 添加到源代码管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12022154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com