【问题标题】:Is there a way to make NuGet Package Source settings per Project?有没有办法为每个项目进行 NuGet 包源设置?
【发布时间】:2020-02-17 06:53:54
【问题描述】:

如何在 Net core 的 csproject 中设置 Nuget 位置?

我们有微软官方的 nuget 包,应该参考 Nuget.org。

应参考 C:\NugetFileShare 的其他包,(私有 Nuget 存储库中公司类库的 Nugets)

目前,我们正在使用包引用格式。

项目 xml 文件中是否有说明每个的 Nuget 位置以及需要私有 Nuget 位置的位置?

以下来自解决方案级别的名称,想知道是否可以从项目级别范围内完成? Referencing NuGet packages from directory in solution

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

其他资源:

Is there a way to make NuGet Package Source settings per solution?

【问题讨论】:

  • 只要 nugets 不在这两个位置,您就可以定义这两个位置,它会从它找到的任何地方获取 nugets。至少这对我的上一个项目有效,我们使用单独的 BaGet 服务器作为我们的内部 nugets。您能否描述您面临的任何需要您在项目级别定义源的问题?
  • 您是否尝试过您发布的最后一个链接中的建议? Nuget.config 仍应在每个项目基础上工作,它与 csproj 或 .NET Core 没有真正的联系或相关。也许您将其与 packages.xml 混淆了?

标签: c# .net asp.net-core .net-core nuget


【解决方案1】:

有办法吗?是的。它会按你的意愿工作吗?可能不会。

也不完全清楚你真正想要什么(这感觉就像XY-problem 的情况。如果你真的想要每个项目的源,你没有解释为什么),作为 nuget.config sn-p 你提供设置 NuGet 将下载和解压缩包的位置。 NuGet 搜索要下载的包的位置位于 packageSources section 中。为什么您希望每个项目的来源不同?如果您错误地认为只能有一个来源,那是不正确的。一个解决方案有多个包源是很正常的。甚至 .NET 基类库代码 (corefx) 也使用 3 package sourcesNuGet itself uses 7 sources

所以,您可能想要的是一个看起来像这样的nuget.config 文件,与您的.sln 文件在同一目录中,或者在您的存储库根目录中:

<configuration>
  <packageSources>
    <clear /> <!-- clear to make sure that everyone uses the same sources -->
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
    <add key="company packages" value="C:\NugetFileShare" />
  </packageSources>
</configuration>

现在,如果您确实有充分的理由需要每个项目的包源,那么首先要注意的是它可能无法在 Visual Studio 中工作。

一种方法是在您的项目目录中简单地拥有一个nuget.config 文件(这在VS 中肯定行不通)。然后,当您直接恢复该项目时(恢复解决方案文件不会考虑此配置),它将使用该配置文件。

由于你标记了.NET Core,而.NET Core只能使用SDK风格的项目,而SDK风格的项目只能使用PackageReference,而PackageReference是用MSBuild恢复的,我们可以看看NuGet's MSBuild restore task有没有任何可以用来实现这个目标的东西。 This line 使用名为 RestoreAdditionalProjectSources 的属性。不幸的是,我猜不出它想要的语法,但您可以尝试在项目文件中的任何&lt;PropertyGroup&gt; 中使用&lt;RestoreAdditionalProjectSources&gt;C:\NugetFileShare&lt;/RestoreAdditionalProjectSources&gt;。由于该属性的名称是“附加项目源”,因此从命令行恢复时它听起来肯定可以工作,即使在恢复解决方案时也是如此。我不知道它是否适用于 Visual Studio。此 MSBuild 属性不适用于使用 packages.config 的项目。

【讨论】:

    猜你喜欢
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 2014-07-04
    • 1970-01-01
    • 2021-03-18
    • 2017-01-31
    相关资源
    最近更新 更多