我将我的解决方案迁移到NuGet推荐的自动包恢复。
源结构(缩写):
MyProject
|- MyProject.sln
|- .nuget
|- NuGet.config
|- NuGet.exe
|- MyProject
|- MyProject.csproj
|- packages.config
|- packages
|- repositories.config
|- .tfignore
NuGet.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
<packageSources>
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
<add key="LocalRepo" value="http://ourlocalrepo/api/v2/" />
</packageSources>
</configuration>
MyProject.csproj更改:
添加了目标:
<Project ToolsVersion="4.0" DefaultTargets="RestorePackages;Build" ...
...
<Target Name="RestorePackages">
<Exec Command=""$(SolutionDir).nuget\NuGet.exe" restore "$(SolutionPath)"" />
</Target>
现在这可以完美地运行MSBuild表单:
但是当我对构建进行排队时,构建失败了:
The command ""C:\Builds\3\Myproject\src\.nuget\NuGet.exe" restore "C:\Builds\3\MyProject\src\MayProject.sln"" exited with code 1.
即使我通过命令行手动执行相同的命令(而不是msbuild),它也会成功并恢复软件包。
当前(脏)解决方法:我在构建服务器上恢复软件包并且不进行清理。另一个选择是将包提交到源控件,我真的不想这样做。
我的nuget.config中有代理设置。
设置似乎很好,我不知道还有什么可以尝试。