c# - 在 Visual Studio 2017 中更改项目的 nuget 包搜索和安装文件夹
问题描述
我在 VS2017 中为一个项目创建了一个解决方案。它是一个 .Net C# Winforms 应用程序。我希望项目将其他项目先前下载的 nuget 包加载到我计算机上的某个文件夹中,并将它们添加到其引用中。
包文件夹位于解决方案目录后面的一个目录。
我怎么能做到这一点?
我已经尝试将一个nuget.config
文件添加到包含以下 XML 代码的解决方案位置:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="globalPackagesFolder" value="..\packages" />
<add key="repositoryPath" value="..\packages" />
</config>
</configuration>
即使将其包含在 VS 解决方案资源管理器中,我的解决方案似乎也完全忽略了它。
我还读过它globalPackagesFolder
被NUGET_PACKAGES
(或类似的东西)环境变量覆盖,那么在.config
文件中设置它有什么意义呢?还是我没有正确理解某些东西?
另外,有点离题,但我仍然很好奇。当我在我的项目上单击“管理 nuget 包”并下载一些东西时,这些包被放置在.csproj
我的项目文件之前的一个目录中。我可以更改该特定项目的这些包的下载位置(并从我的项目的引用中提取)吗?
解决方案
在 Visual Studio 2017 中更改项目的 nuget 包搜索和安装文件夹
要回答这个问题,我们需要明确两个概念,Package source和Repository。显然,Package source
用于下载 nuget 包,Repository
用于存储解决方案的 nuget 包。简单来说,Nuget 管理包就是package source
从Repository
.
因此,如果您希望 Winforms 应用程序将之前由其他项目下载的那些包加载到某个文件夹中并将它们添加到其引用中,您有两件事要做(如果我理解正确的话)。
一种是将之前由其他项目下载的那些包添加到您的 Winforms 应用程序中,另一种是将这些包添加到某个文件夹中。
要解决第一件事,它需要下载包,所以我们必须将存放其他项目之前下载的nuget包的文件夹制作到包源中。转到options->Tools->NuGet Package Manager->Package Sources,添加存储之前其他项目下载的包的文件夹,然后您可以通过nuget包管理器UI将这些包添加到Winforms应用程序:
检查此线程:将位于本地包存储库中的 NuGet 包安装到新的 Visual Studio 解决方案中
要解决第二个问题,就像您所做的那样,将一个nuget.config
文件添加到包含以下 XML 代码的解决方案位置:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="repositoryPath" value="..\packages" />
</config>
</configuration>
不需要用于globalPackagesFolder
全局包文件夹的设置C:\Users\<UserName>\.nuget\packages
。
注意:添加后nuget.config
,记得重启Visual Studio,然后添加nuget包,包会存放在我的解决方案的.sl文件之前的目录中(因为你设置repositoryPath
为..\packages
)。
希望这可以帮助。
推荐阅读
- r - r闪亮:如何做“记分卡”表格样式?
- jenkins - Amazon-s3:调用 PutObject 操作时发生错误 (InvalidRequest)。不允许同时指定 Canned ACL 和标头授予
- java - 减少休眠中的准备好的语句计数
- python - 通过 ssh 运行时出现 Python 分段错误
- reactjs - 保持 react-dates 日历始终打开
- token - JWT 令牌对 JwtSecurityTokenHandler 有效,但对 JWT IO 无效
- c# - 需要提示从哪里开始组合
- python - 我们什么时候需要在循环中定义变量?
- ios - 带按钮的自定义 MKAnnotationView,未调用操作方法
- javascript - Vue js我需要将文件压缩为gzip并将其发送到后端