UPDATE 2: 显然,使用VS2017,您甚至可以使用经典csproj项目的包引用,但它们并非't backwards compatible anymore, and there have been some problems with restoring package sub-dependencies. I'确定将全部解决 .
22
@Richard Szalay 's answer is right - you don' t需要提交nuget.exe . 如果由于某些原因Visual Studio不会自动下载nuget.exe,请确保在 nuget.targets 文件中将以下内容设置为 true :
<!-- Download NuGet.exe if it does not already exist -->
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">true</DownloadNuGetExe>
7 回答
这篇文章很老了,你不应该再使用解决方案级别的NuGet包恢复了 . 从版本2.7开始,NuGet设置中有一个选项可以自动恢复构建包 . 因此可以删除.nuget文件夹,并从项目中删除该选项 .
http://docs.nuget.org/docs/reference/package-restore
UPDATE: 随着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
UPDATE 2: 显然,使用VS2017,您甚至可以使用经典csproj项目的包引用,但它们并非't backwards compatible anymore, and there have been some problems with restoring package sub-dependencies. I'确定将全部解决 .
@Richard Szalay 's answer is right - you don' t需要提交nuget.exe . 如果由于某些原因Visual Studio不会自动下载nuget.exe,请确保在
nuget.targets
文件中将以下内容设置为 true :关闭VS解决方案,重新打开并构建它 . Visual Studio现在应该自动下载nuget.exe .
根据this thread,.nuget文件夹应该受版本控制 .
您需要提交
.nuget\nuget.targets
,但不提交nuget.exe
. 只要你在nuget.targets中将DownloadNuGetExe
更改为true
,目标就会下载exe(如果它不存在)虽然我通常不喜欢将exe添加到源代码控制的想法,但我建议源代码控制应包含打开,构建和执行项目所需的任何内容 .
在这种情况下,它听起来像.nuget文件夹是必需的依赖项 . 因此它应该受源头控制 .
你需要研究的唯一问题是,如果该文件夹被标记为只读,NuGet将如何做出反应,一旦签入,TFS将会做什么 .
Update: 我对此做了一些研究,因为我之前从未使用过NuGet . http://blog.davidebbo.com/2011/03/using-nuget-without-committing-packages.html
我建议您可能要做的就是让NuGet成为必须在每个开发人员工作站上安装的要求 .
此外,您应该在源代码管理中放置使工作站准备好开始编辑项目所需的批处理文件 . 批处理文件将运行获取和安装依赖包所需的命令 .
除此之外,我会说你可能想直接联系NuGet询问他们究竟应该如何运作 .
现在nuget支持包恢复,我们正在更密切地关注它 .
我们使用Subversion进行源代码控制,我最初的想法是
.nuget
应该添加到我们的存储库中,但是使用svn:externals添加它以便它指向一个位置 .这样我们就可以自动将新版本推送给所有开发人员和项目 . 对于发布分支上的项目而不是HEAD,如果我们想单独留下nuget,我们可以指定svn:externals引用的修订版 .
我们有很多项目,所以它也意味着不会在回购中多次重复
nuget.exe
.我们在文件夹中有
nuget.config
文件,因为它具有对我们内部Nuget服务器的引用,使用Package Sources区域:https://docs.nuget.org/consume/nuget-config-settings除此之外,您应该让Visual Studio处理包的下载 .