应该将.nuget文件夹添加到版本控制吗?

Bor*_*ard 107 version-control visual-studio nuget

使用较新版本的NuGet,可以配置项目以自动恢复NuGet包,以便该packages文件夹不需要包含在源代码存储库中.好.

但是,此命令添加了一个新.nuget文件夹,其中有一个二进制文件NuGet.exe.这也可以由Visual Studio自动重新创建,因此将其添加到版本控制感觉不正确.但是,如果没有此文件夹,Visual Studio甚至无法正确加载解决方案.

你们怎么处理这个?将.nuget添加到源代码管理中?在打开解决方案之前运行一些命令行脚本?

Gan*_*Gan 47

@Richard Szalay的回答是对的 - 你不需要提交nuget.exe.如果由于某些原因Visual Studio不自动下载nuget.exe,请确保在文件中将以下设置为truenuget.targets:

<!-- Download NuGet.exe if it does not already exist --> 
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">true</DownloadNuGetExe>
Run Code Online (Sandbox Code Playgroud)

关闭VS解决方案,重新打开并构建它.Visual Studio现在应该自动下载nuget.exe.

  • 这更像是一种隐私问题."通过互联网提出请求的简单行为可以揭示有关用户的信息(例如,从用户的IP地址,我们可以近似她的位置)." 请参阅Nuget博客上的[Package Restore and Consent文章](http://blog.nuget.org/20120518/package-restore-and-consent.html) (2认同)

Jer*_*emy 47

这篇文章很老了,你不应该再使用解决方案级别的NuGet包恢复了.从版本2.7+开始,NuGet设置中有一个选项可以自动恢复构建版本的包.因此可以删除.nuget文件夹,并从项目中删除该选项.

http://docs.nuget.org/docs/reference/package-restore

更新:随着NuGet 4.x和.NET Standard 2.0的发布,当您使用新的csproj格式时,您现在可以使用包引用,具有讽刺意味的是重新引入对msbuild的依赖来恢复包,但现在包是msbuild的一等公民.上面的链接也提到了PackageReference,但下面的公告更详细说明:

https://blog.nuget.org/20170316/NuGet-now-fully-integrated-into-MSBuild.html

还有NuGet 4.x RTM公告,具有讽刺意味的是没那么有用:

https://blog.nuget.org/20170308/Announcing-NuGet-4.0-RTM.html

更新2:显然,使用VS2017,您甚至可以使用经典csproj项目的包引用,但它们不再向后兼容,并且在恢复包子依赖性方面存在一些问题.我相信一切都会得到解决.

  • [这是一个更清楚的解释](http://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore)如何迁移.在Github上有一个[方便的PowerShell脚本](https://github.com/owen2/AutomaticPackageRestoreMigrationScript) (8认同)

Bor*_*ard 22

根据这个线程,.nuget文件夹应该是版本控制的.


Ric*_*lay 20

你需要提交.nuget\nuget.targets,但不是nuget.exe.只要您在nuget.targets中更改DownloadNuGetExe为目标,目标将下载exe(如果它不存在)true