【问题标题】:How to fix Nuget restore for projects using different package sources within same VS solution如何修复在同一 VS 解决方案中使用不同包源的项目的 Nuget 还原
【发布时间】:2021-07-04 14:59:42
【问题描述】:

我正在使用 VS 2017,并且我有一个新的公共项目(CommonLib),需要多个解决方案中的项目引用。对于这个常见的项目,我想维护它自己的包文件夹。在将此项目引用到现有解决方案(具有引用不同包文件夹的项目)后,nuget restore 不会同时查看这两个包文件夹。

不确定在单个解决方案中 nuget restore 是否可以搜索多个包文件夹以根据项目文件提示路径解析引用库。 我还看到从 packages.config 迁移到 PackageReference 会有所帮助,但我不想在现有项目中删除 packages.config,也不想在新的 CommonLib 项目中保持一致。

这是我的 src 设置路径:

UX.Sln - paths: C:\Src\UX\UX.Sln; C:\Src\UX\packages;
    UXSource.csproj - paths: C:\Src\UX\UXSource; This refers nuget libs from src C:\Src\UX\packages
    CommonLib.csproj - paths: C:\Src\Common\CommonLib; I want to refer nuget libs from src C:\Src\Common\packages

Api.Sln - paths: C:\Src\Api\Api.Sln; C:\Src\Api\packages;
    ApiSource.csproj - paths: C:\Src\Api\ApiSource; This refers nuget libs from src C:\Src\Api\packages
    CommonLib.csproj - paths: C:\Src\Common\CommonLib; I want to refer nuget libs from src C:\Src\Common\packages

【问题讨论】:

  • 嗨 mv_50,关于这个问题的任何更新?请检查我的回答是否可以帮助您解决问题。如果有帮助,请不要忘记accept it。而且不是,请随时告诉我们:)

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


【解决方案1】:

如果你想通过多个 nuget 包源恢复 nuget 包。你只需要将自定义的nuget.config 文件放入即可。

而且如你所见,custom nuget.config file 将作用于当前文件夹下的当前项目和所有子目录下的项目。

并且nuget.config 文件无法添加到项目文件夹中,它应该位于解决方案文件夹或以上文件夹下才能使其工作。

此外,您似乎已将一个名为CommonLib 的现有项目添加到UX 解决方案和Api 解决方案中。

所以你可以试试这个:

1)C:\Src 下添加一个名为nuget.config 的文件,然后在该文件下添加这些节点:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageSources>
        <add key="NuGet_Restore_Path1" value="C:\Src\UX\packages" />
        <add key="NuGet_Restore_Path2" value="C:\Src\Common\packages" />
        <add key="NuGet_Restore_Path3" value="C:\Src\Api\packages" />
    </packageSources>
</configuration>

2)那么,这两个解决方案可以使用这些包文件夹来恢复丢失的nuget包。

使用:nuget restore UX.slnnuget restore Api.Sln

另外,如果您不希望新的nuget.config文件影响src文件夹下的其他解决方案,您可以将文件添加到C:\Src\UXC:\Src\Api中。 p>

【讨论】:

    【解决方案2】:

    看起来另一个项目没有配置 NuGet 源。所以你可以使用

    dotnet nuget add &lt;source&gt; 命令documentation

    或使用NuGet.Config 文件扩展它。 https://docs.microsoft.com/en-us/nuget/reference/nuget-config-file#package-source-sections

    还请尝试将文件夹位置打包在nuget.config

     <configuration>
          <config>
            <add key="repositoryPath" value="$\..\pacakges" />
          </config>
        </configuration>
    

    【讨论】:

    • 我正在使用 VS 2017 和 .net fw 4.6.1,因此包管理器控制台不支持“dotnet nuget add”。尝试使用此 cmd“nuget sources add..”但运行时出现问题“ Install-Package NuGet.CommandLine -Version 4.4.1" 来安装 NuGet cli..so 跳过了这个选项。在扩展 NuGet.config 时,我尝试使用&lt;config&gt; &lt;add key="repositoryPath" value="..\..\packages" /&gt; &lt;/config&gt; 添加此文件,也尝试使用&lt;packageSources&gt; &lt;add key="Test Source" value="..\..\packages" /&gt; &lt;/packageSources&gt;,但这些都不起作用。 .而且我在尝试这些时没有删除 packages.config ..
    • @mv_05 我已经更新了答案,请试试这个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多