当添加到解决方案中时,NuGet程序包将还原/安装到多个位置

时间:2018-08-29 00:19:57

标签: c# .net visual-studio-2017 nuget nuget-package

我正在使用Visual Studio 2017,构建一个 .Net框架(非核心)v4.6.1 ASP.Net MVC项目,当我将包添加到解决方案中的单个项目中时,似乎可以还原/安装到多个不同的位置。我正在从多个供稿中安装软件包,其中一些是我公司内部的,而另一些是公开的。

某些软件包位于我的解决方案根目录下,而其他软件包似乎位于%userprofile%.nuget \ packages \

甚至安装了一个软件包,其提示路径与两个软件包的位置完全不同。该软件包已安装在此处,但我不知道为什么它没有安装到我认为该解决方案的本地软件包文件夹中。

我不确定这些是否是正确的问题,但这是我现在要回答的问题:

  1. 对于VS2017,.Net框架,ASP.Net MVC,默认的软件包安装位置是什么?
  2. 如何指定用于CI / CD的软件包来自哪个提要?
  3. NuGet是否查找我的计算机上已经安装的软件包?
  4. 如果是,NuGet在哪里寻找软件包,我在哪里可以找到其寻找的位置列表。

谢谢!

1 个答案:

答案 0 :(得分:2)

  

1。对于VS2017,.Net框架,ASP.Net MVC,默认的软件包安装位置是什么?

这取决于您使用哪种程序包管理方法。如果使用package.config,则默认软件包安装位置为解决方案根目录;如果使用PackageReference,则默认软件包安装位置为%userprofile%.nuget\packages\。这就是为什么您将软件包添加到解决方案内部的单个项目中的原因,这些软件包似乎正在还原/安装到多个不同的位置。您可以卸载和编辑项目,检查项目文件.csproj,会发现以下内容:

  <ItemGroup>
    <PackageReference Include="xxxxx">
      <Version>x.x.x</Version>
    </PackageReference>
  </ItemGroup>

要解决此问题,您可以接受Lex的建议。 如果要统一,请选择并更改文件。您可以使用PackageReference(或package.config)卸载那些程序包,然后更改nuget设置(工具->选项-> NuGet软件包管理器->常规-> 默认软件包管理格式-> Packages.config),然后重新安装这些软件包,确保它们使用统一格式。

  

2。如何指定用于CI / CD的软件包来自哪个提要?

您不能执行此类操作,也不需要执行操作。众所周知,当我们从多个提要中安装nuget包时,所有包都下载到本地主机上,Visual Studio将在本地使用这些包,Nuget不在乎它来自哪个提要。

  

3。NuGet是否查找我的计算机上已经安装的软件包?   4.如果是,NuGet在哪里寻找软件包,我在哪里可以找到它寻找的位置列表。

是的,您可以使用命令行nuget locals all -list查找其位置列表。

有关更多详细信息,请参见Managing the global packages, cache, and temp folders

希望这会有所帮助。