.net - NuGet 将 DLL 文件放在哪里?

标签 .net visual-studio visual-studio-2010 reference nuget

我正在尝试解决 NuGet 的 source control limitations 问题.

为此,我需要更多地了解 NuGet 的工作原理。让我们举一个简单的例子。假设我有一个项目,我向其中添加了 AutoMapper。当我添加它时,DLL文件应该放在哪里?

我问是因为它似乎不一致。有时引用会在“Packages”文件夹中查找 DLL 文件:

NuGet using packages path

有时它会在调试构建输出文件夹中查找:

NuGet using the 'Debug' path

但在这两种情况下,packages.config 文件中的 AutoMapper 行是相同的:

第一个例子:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="AutoMapper" version="1.1.0.118" />
  <package id="CommonServiceLocator" version="1.0" />
  <package id="Unity" version="2.1.505.0" />
</packages>

第二个例子:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="NSubstitute" version="1.1.0.0" />
  <package id="AutoMapper" version="1.1.0.118" />
  <package id="CommonServiceLocator" version="1.0" />
  <package id="Unity" version="2.1.505.0" />
</packages>

那么是什么控制着它设置引用的位置呢?我怎样才能让它只使用包位置?

(当它使用调试输出文件夹时,如果您针对“发布”进行编译,这些引用将失败。)

沮丧的注释:我必须承认,我发现 NuGet 是一个很酷的想法,但除了简单的情况外,它还没有准备好。 (我正在考虑恢复一个包含所有 DLL 文件的库文件夹。)

我不禁想知道我是否遗漏了一些东西,因为 NuGet 得到了如此广泛的采用。一定有某种方法可以让这项工作成功......

最佳答案

.NET Core

在 .NET Core 中,NuGet 包现在默认存储在全局位置:

Windows:%userprofile%\.nuget\packages

(又名 C:\Users\[User]\.nuget\packages )

Linux:~/.nuget/packages

此外,packages.config已删除,现在使用 <PackageReference> 存储引用.csproj 中的元素文件。

您可以找到更多文档here .

<小时/>

如果您找不到全局位置,则可能已更改。您可以使用以下命令发现它:

dotnet nuget locals global-packages --list

如果您想将包位置更改为,例如 e:\packages ,您可以使用以下命令。

dotnet nuget config -Set globalPackagesFolder=e:\packages

我安装 NuGet 包时遇到的任何问题都可以通过清除所有缓存位置来解决(除了全局位置之外,还有其他位置保存 NuGet 包),如下所示:

dotnet nuget locals all --clear

关于.net - NuGet 将 DLL 文件放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7018913/

相关文章:

.net - DisplayMemberPath 等属性成为依赖属性的原因/场景是什么?

c# - 以谓词为参数的方法

javascript - Visual Studio 2017 不显示 js 文件的折叠图标

c# - 用于 Windows Azure 崩溃的 DevFC.exe(Development Fabric)

visual-studio-2010 - 如何在visual studio 2010中创建测试证书?

.net - 时间作为决定性值(value)

c# - 如何以自动方式将 OLEObject 的内容保存为文件?

visual-studio - 隐藏工具窗口的快捷方式

visual-studio - 如何关闭在 Visual Studio 2010 中运行 T-SQL 脚本时出现的 SQL Server 输出子窗口?

c++ - 错误 C2246 : cannot access private member