Vac*_*ano 14 version-control tfs visual-studio-2010 visual-studio nuget
我是一个使用Team Foundation Server进行源代码管理的双人团队.我开始了一个新的解决方案 对于该解决方案,我创建了几个项目 在其中许多我使用NuGet安装AutoMapper和Unity.然后我右键单击解决方案并选择"添加到源代码管理".然后,我检查了所产生的挂起更改.
我团队中的另一个人做了一个最新的,并且所有NuGet引用都失败了.
所以,我想我需要添加Packages文件夹.所以我做到了.
在我这样做之后,NuGet引用仍然失败(对他来说).
此外,当我尝试将NuGet包添加到文件时,我现在收到此错误:
访问路径'C:\ src\MyPath\ToMySolution\packages\repositories.config'被拒绝.
我假设这是因为repositories.config文件现在处于源代码控制之下(因此只有在手动签出之前它才会被读取).
那么,这是我的两个问题:
我做错了吗?或者NuGet是否真的不适合与源代码管理一起使用?
Xav*_*ter 11
编辑2014/03/31:不再需要基于MSBuild的手动包恢复启用,另请参阅http://xavierdecoster.com/migrate-away-from-msbuild-based-nuget-package-restore.
编辑2012/02/07:这是NuGet vsix的内置功能,称为启用包还原.
过时的替代品
有一个NuGet包,它叫做NuGetPowerTools.它在Visual Studio中向NuGet包管理器控制台添加了两个新命令,其中Enable-PackageRestore对您来说很有趣.
它将添加一个包含nuget.exe,nuget.settings.targets和nuget.targets的.nuget文件夹.运行启用包还原时,它将枚举解决方案中的所有项目,并在项目文件中添加导入nuget.targets语句(实际上是msbuild文件本身).
无论何时构建项目或整个解决方案,nuget都将获取该项目/解决方案的所有包,如packages.config文件中所定义.这发生在预构建步骤中.
简而言之:
每当有人获取源代码时,无论是团队中的另一个开发人员还是构建代理,都会指示msbuild进程在预构建步骤中获取任何所需的包.
此外,当程序包未提交到TFS源代码管理时,您不会遇到只读标志问题,也不会与二进制文件合并冲突.
如果您愿意,您还可以在我的博客上查看此方法的底层推理.
不要检查包文件夹.
将以下预建事件添加到项目中:
$(SolutionDir)build\nuget install $(ProjectDir)packages.config -source \\server\path\NuGetPackages -o $(SolutionDir)packages
Run Code Online (Sandbox Code Playgroud)
如果不使用自定义包,则省略-source参数.
nuget.exe被检入$(SolutionDir)build \nuget