仅在调试构建中防止NuGet还原包

7
我在我的解决方案中启用了还原包选项,因此当我将代码上传到CI服务器时,它会更新所有需要正确构建的包,并且它运行得很好。现在的问题是,在我的本地机器上,构建需要很长时间开始,因为需要“更新包”。有没有办法只在发布构建中启用还原包呢?
我尝试将.csproj文件中的属性移动到release/debug部分,并设置为false和true,但是NuGet在打开NuGet控制台时更新属性并将两个重置为true。我还尝试仅在发布部分中包含该属性,但是NuGet会将其添加到全局部分...所以我无法使其保持想要的状态...你有什么建议吗?
1个回答

15

如果您还没有成功回答这个问题,那么以下是您需要遵循的步骤:

在Windows中,您的解决方案文件所在的位置应该有一个名为.nuget的文件夹。将此文件夹重命名或删除。

现在,使用记事本或任何文本编辑器打开每个.csproj或.vbproj文件并删除这些行。

<RestorePackages>true</RestorePackages>
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" />

重要的部分是删除/重命名.nuget文件夹。这将完全禁用包恢复。

编辑:要选择性地禁用DEBUG生成的程序包还原,请编辑Nuget.settings.targets文件并修改以下行:

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

为了

<RestorePackages Condition="$(RestorePackages) == '' AND '$(Configuration)' == 'Debug'">false</RestorePackages>

Nuget.settings.targets文件位于.nuget文件夹中,该文件夹应与您的解决方案文件在同一文件夹中。


好的,我不想完全移除程序包还原,我只想在调试构建时禁用它... 当我在我的本地/开发计算机上时,我不希望它运行,但当我将其上传到CI服务器时,我希望它能获取所有程序包。 - Jaime
我认为最后一个例子应该是OR而不是AND - 即$(RestorePackages) == '' OR $(Configuration) == 'Debug'。 - Mark Watts

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接