【问题标题】:How do I include NuGet packages in my solution for .Net Core projects?如何在 .Net Core 项目的解决方案中包含 NuGet 包?
【发布时间】:2017-09-26 23:26:44
【问题描述】:

对于经典的 .Net 项目,如果我添加了对 NuGet 包的引用,它将被下载到包文件夹中,我可以将其与我的其余代码一起检查到源代码控制中。这允许任何开发人员下载代码以及 NuGet 包,而无需设置包源来单独下载包。这不是 .Net Core 项目的工作方式。解决方案似乎没有 packages 文件夹,每个开发人员都可以设置自定义包源并在获得代码时下载包。有没有办法像经典的 .Net 项目一样配置 .Net Core 项目并管理包文件夹?

【问题讨论】:

  • Packages.config 被合并到 csproj 中。见Additions to the csproj format for .NET Core。您现在使用PackageReference XML 元素。 Visual Studio 包管理器仍然有效。
  • 您的问题是引用包缓存中的内容还是缺少用于托管(私有)包的 nuget 提要?

标签: nuget .net-core nuget-package-restore


【解决方案1】:

可以通过NuGet.Config 文件控制很多 NuGet 行为(有关详细信息,请参阅this reference

如果您将NuGet.Config 文件放在具有以下内容的解决方案旁边,您可以覆盖将包恢复到的位置:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="globalPackagesFolder" value=".\packages" />
  </config>
</configuration>

如果问题是您需要在每台机器上的 VS 中设置其他源,您还可以通过 NuGet.Config 在存储库中添加这些源,以便 VS 在打开解决方案时选择要使用的源:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="CompanyFeed" value="https://my.company.com/private/nuget" />
  </packageSources>
</configuration>

如果您没有托管包的源并且需要在解决方案中包含包,您可以在 NuGet.Config 中使用包含 .nupkg 文件的目录:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="local" value=".\NuGetPackages" />
  </packageSources>
</configuration>

【讨论】:

  • 我尝试了 独立。我说不出区别。他们俩似乎都在做同样的事情。我还希望这些包会自动添加到源代码管理中,就像过去使用 .Net 项目一样。我尝试使用 显式设置,但似乎没有帮助。我不得不手动将文件添加到源代码管理中,但至少现在它们位于解决方案目录下是可能的。
  • 不要将 .\ 放入值中,因为这不是跨平台的(也不适用于 Windows)。
  • @knownasilya 你试过了吗? Nuget 通常会规范化路径。如果这停止工作,我们应该报告错误。
  • 是的,它适用于 macOS,但不适用于 Windows。它逐字逐句地制作了该文件夹。
  • @Eric 根据链接文档 (docs.microsoft.com/en-us/nuget/reference/…):dependencyVersion 和 repositoryPath 仅适用于使用 packages.config 的项目。 globalPackagesFolder 仅适用于使用 PackageReference 格式的项目。通常,PackageReference 用于较新的 .NET Core 应用程序,这些应用程序根据定义很小,因此依赖于比 .NET Framework 库更多的外部引用,后者可以依赖于提供此类功能的 .NET Framework。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-16
相关资源
最近更新 更多