【发布时间】:2018-11-27 17:21:23
【问题描述】:
我在 VS2017 中为一个项目创建了一个解决方案。它是一个 .Net C# Winforms 应用程序。我希望该项目将其他项目之前下载的 nuget 包加载到我计算机上的某个文件夹中,并将它们添加到其引用中。
packages 文件夹位于解决方案目录后面的一个目录。
我怎样才能做到这一点?
我已经尝试将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 文件之前的一个目录中。我可以更改该特定项目的这些包的下载位置(并从我的项目的引用中提取)吗?
【问题讨论】:
-
这样做的目的是什么?为什么不将相同的 nuget 包添加到您的新项目中?
-
@Ley,我有一个 Git 存储库,其中包含多个具有不同依赖项的项目,我忽略了包文件夹,我依赖于需要能够找到这些包的“恢复 nuget 包”选项。它们已经下载到我的电脑上,我只需要通知我正在处理的项目。
-
我绝不是专家,也许我构建 repo 的方式很糟糕。让我知道它是否存在以及是否有更好的选择。但是我的 repo 的目标是让多个文件夹具有不同的项目,这些项目做不同的事情,具有不同的依赖关系,并且可以在某些解决方案(作为项目)中相互引用。
-
您所描述的基本上是 Visual Studio 的 Nuget 包管理器的默认行为,您的所有 dll 都被下载到 ..\packages 中,所有引用它的项目都将共享。一旦你使用 Nuget 包管理安装包,它会自动添加对你的项目的引用,并在你的项目文件夹中创建一个 packages.config 文件,该文件指示该项目使用的 nuget 包,当你恢复它时,它会正确找到它.
标签: c# .net visual-studio winforms nuget