使用版本2.7中添加的NuGet自动包还原时,NuGet会自动将所有缺失的包下载到位于解决方案级别的packages \文件夹中。当解决方案包含库(即git子树或git子模块)时,这会导致问题,因为库项目期望将包下载到位于各自解决方案文件夹中的packages文件夹(通常将其嵌套在主代码中的子文件夹中#39 ; s解决方案文件夹)并且不知道在主代码的解决方案文件夹中查找包。例如:
primary_code_folder\
->primary_code.sln
->packages\
[various packages downloaded by NuGet]
->primary_code_project\
->library_solution_folder\
--->library_code.sln
--->packages\
[where the library project expects packages to reside]
--->library_code_project\
可能的解决方案:
nuget.exe restore library_code.sln
。但是,nuget.exe在解决方案中并不是自然而且并非(默认情况下)位于路径变量中。因此,似乎将nuget.exe复制到项目中可能会导致以后不兼容,因为更新不会被提取。也许有解决方法吗?有人可以分享他们如何解决这个问题吗?这里提出了一个类似的问题(NuGet Automatic Package Restore when using git submodules),针对不同的情况,答案不能满足我在这篇文章中描述的需求。
答案 0 :(得分:1)
这可以通过在存在sln的每个文件夹位置放置多个nuget.config文件来完成。
在nuget.config中,您需要添加以下内容
<config>
<add key="repositoryPath" value="C:\Temp" />
</config>
或
<config>
<add key="repositoryPath" value="..\..\.." />
</config>
请点击此处了解更多详情https://docs.nuget.org/consume/nuget-config-settings