dpa*_*ons 4 c# tfs visual-studio nuget nuget-package-restore
我看了很多关于SO和的NuGet的答案(和一般的上网,真的),但我似乎无法克服我与NuGet包有问题恢复在Visual Studio 2015年,我有以下的情况.
解决方案A结构
- 项目A.
如果我打开并构建解决方案AI,请参阅显示nuget包恢复进度的对话框,并成功构建解决方案.
解决方案B结构
- 项目A.
- 项目B
但是,假设我从来没有构建的解决方案A(TFS从新鲜即拉),如果我打开和构建BI解决方案看到对话框,显示了NuGet包还原进度,但由于项目A构建失败构建失败.
似乎正在发生的是NuGet正在恢复项目B的软件包,但不是项目A,因此构建失败.到目前为止,如果我查看项目B的引用,所有NuGet引用都已解析,但项目A的引用仍然被破坏.
几点:
我们将非常感谢您的想法.
默认情况下,NuGet在解决packages
方案根目录中创建解决方案的文件夹,每个项目将其包DLL引用到该"本地"包文件夹.在您的示例中,如果您打开项目A的.csproj文件,您可能会看到引用路径类似于..\packages\[package name]\[etc]
.
因此,当您从TFS进行全新拉动并构建解决方案B时,项目A无法找到其DLL,因为c:\workspace\Solution A\packages
尚不存在(或者您机器上的绝对路径).
要更正此问题,请使用创建于的共享包文件夹c:\workspace\packages
.为此,您必须在每个解决方案中为NuGet.config添加一个额外的节点(有关详细信息,请参阅https://docs.nuget.org/consume/nuget-config-file ;我还假设您有一个NuGet文件夹at c:\workspace\Solution A\.nuget
):
<config>
<add key="repositorypath" value="..\..\packages" />
</config>
Run Code Online (Sandbox Code Playgroud)
我在这里使用了一个相对路径,但你也可以使用绝对路径,文档说你也可以使用%HOME%
它.
这样做,然后重新启动Visual Studio.下次打开包管理器时,它应该询问您是否要还原丢失的包,并假设您单击是,它会将它们放在新位置.最后一步是编辑.csproj文件并更改所有..\packages
to的实例..\..\packages
(或者你可以卸载并重新安装包,但我发现编辑.csproj的速度要快很多).
归档时间: |
|
查看次数: |
17354 次 |
最近记录: |