我有一个包含两个项目的解决方案。
/Solution
.sln
.nuget.config
/ProjectA
.csproj
.nuspec
/ProejctB
.csproj
.nuspec
当我通过nuget添加依赖项ProjectA时。
项目结构如下:
/Solution
.sln
nuget.config
/packages
.nupkg
/lib
.dll
/ProjectA
.csproj
.nuspec
packages.config
/ProejctB
.csproj
.nuspec
基本上,Visual Studio会创建一个packages.config文件并将依赖项放在那里。并且,依赖关系被添加到/packages
文件夹中。此外,.csproj
内容也会发生变化。(添加了一个引用,它在/packages
文件夹中包含dll的相对路径。)
我有两个问题。
1-内部nuget.config文件我放了以下行。所以我希望nuget将使用默认的本地存储库,而不是在解决方案中创建一个/packages
文件夹。如何防止在解决方案中创建/ packages文件夹。相反,我想使用"%userprofile%\.nuget\packages"
。
<add key="globalPackagesFolder" value="%userprofile%\.nuget\packages" />
2-当我将依赖项添加为nuget包时。仍然.csprj
文件被更改,并且在那里添加dll的相关路径作为具有相对路径的参考。好吗?不会自动生成packages.config
{}}。为什么还要更新此文件。
答案 0 :(得分:2)
1-内部nuget.config文件我放了以下行。所以我希望nuget将使用默认的本地存储库,而不是在解决方案中创建/ packages文件夹。如何防止在解决方案中创建/ packages文件夹。相反,我想使用“%userprofile%.nuget \ packages”。
您应该使用 NuGet.Config 中的以下设置:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="repositoryPath" value="%userprofile%\.nuget\packages" />
</config>
</configuration>
您可以从下面的屏幕截图中查看测试结果,将这些包添加到“%userprofile%\.nuget\packages
”文件夹中:
注意:注意文件名的大写和小写以及添加后重新启动VS 。
2-当我将依赖项添加为nuget包时。仍然.csprj文件是 更改并将dll的相关路径添加到那里作为参考 相对路径。好吗?是不是自动生成的packages.config就够了。 为什么还要更新此文件。
不是,因为 .csproj文件中的Package.config和HintPath具有不同的角色。 NuGet使用Package.config来管理Packages,Visual Studio使用.csproj中的HintPath引用Dll文件的路径。这两个文件都需要更新,否则Visual Studio会抛出错误“无法找到引用...”