gpt4 book ai didi

c# - 有没有办法为每个项目进行 NuGet 包源设置?

转载 作者:行者123 更新时间:2023-12-04 01:38:40 26 4
gpt4 key购买 nike

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

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

应引用 C:\NugetFileShare 的其他包(Nuget 用于私有(private) Nuget 存储库中的公司类库)

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

项目 xml 文件中是否有说明每个的 Nuget 位置以及需要 Private 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?

最佳答案

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

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

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

<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 的属性.不幸的是,我猜不出它想要的语法,但你可以尝试使用 <RestoreAdditionalProjectSources>C:\NugetFileShare</RestoreAdditionalProjectSources>在任何 <PropertyGroup>在您的项目文件中。由于该属性的名称是“附加项目源”,因此从命令行恢复时它听起来肯定可以工作,即使在恢复解决方案时也是如此。我不知道它是否适用于 Visual Studio。此 MSBuild 属性不适用于使用 packages.config 的项目.

关于c# - 有没有办法为每个项目进行 NuGet 包源设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58481966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com