我现在处于重构一个大型项目的疯狂阶段,该项目有很多遗留和不稳定的模块。我已决定拆分目前拥有所有项目的解决方案(因此,大约有20个项目,并且由于单元测试项目肯定会在下个月推出),因此将其捆绑在一起以使其更加独立和精细。
通过这种方法,需要在多个解决方案中引用或添加模块(例如API客户端)。
问题在于,Nuget软件包仅在最初首次添加的解决方案上得到恢复。所以最简单的例子:
解决方案A:
------ ProjectA
------ APIClient
解决方案B:
------项目B
------ APIClient
由于我们不包括packages文件夹,因此会导致Nuget软件包出现问题:
克隆仓库。
打开解决方案B,进行构建并还原Nugets以获得解决方案。
解决方案B中ClientAPI软件包的错误。
转到解决方案A进行构建并还原Nugets以获取解决方案
回到解决方案B。
在解决方案B中为ClientAPI还原了Nuget,并且错误消失了。
有办法吗?
我的配置:
为多个解决方案中存在的C#项目管理Nuget软件包
感谢您的回复。我SolutionA
用Project的两个解决方案重现了此问题APIClient
。而且SolutionB
,加上现有项目APIClient
中SolutionA
的SolutionB
。
然后,如果我们在上还原nuget包,则默认情况下,SolutionB中SolutionB
项目的包APIClient
将还原\packages
到SolutionB文件夹中的文件夹中,而不是该SolutionA
文件夹中。
在这种情况下,项目APIClient
仍然缺少中的.dll
引用SolutionB
,您仍然必须转到SolutionA
并还原nuget软件包。这就是您遇到该问题的原因。
要解决此问题,您可以NuGet.Config
在SolutionA
和旁边添加一个文件,SolutionB
其中包含以下内容:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="repositoryPath" value="C:\Packages" />
</config>
</configuration>
因此,该\packages
文件夹与解决方案文件无关。
此外,如果你有兴趣,你可以尝试将转换packages.config
到packagereference
该项目APIClient
,与此设置,NuGet包将被保存在全球包文件夹,C:\Users\<UserName>\.nuget\packages
。
希望这可以帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句