NET Core 3.1 应用程序中缺少 Nuget 包错误

问题描述

我使用 VS 代码而不是 Visual Studio 来运行我的 .NET Core 3.1 Web 应用。

我有一个 .NET Core 3.1 应用程序。因为我使用的是客户端 VDI 机器(它使用的是 Win 7 SP1 操作系统),它当前正在阻止 Nuget.Org URL。 因此,作为一种解决方法,我已将所有 Nuget 包复制到我的 VDI 中的一个文件夹中,并更新了 Nuget.Config 中的路径。 但我仍然低于 缺少包”错误。我的应用程序不直接依赖于这些包。

enter image description here

以下是我的 Nuget.Config 文件

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <!-- add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" / -->
    <add key="nuget.org" value="C:\NugetPackageDownloadLocation" / >
  </packageSources>
</configuration>

将得到任何帮助。

解决方法

Microsoft 已在 VS2015 中放弃对“启用 NuGet 包还原”的支持,您需要进行一些手动更改以迁移旧解决方案或将该功能添加到新解决方案。 NuGet Package Restore 中很好地描述了新功能。

这里还有一份现有项目的迁移指南(如前所述):NuGet Migration Guide

升级时:

  1. 不要删除 .nuget 目录。
  2. 删除 nuget.exe 和 nuget.targets 文件。
  3. 离开 nuget.config。
  4. 手动清除对 NuGet 目标的任何引用的每个项目文件。提到的 Powershell 脚本似乎弊大于利。

创建新项目时:

  1. 在您的 Visual Studio 2015 解决方案中,创建一个名为 .nuget 的解决方案目录。

  2. 创建解决方案目录(.sln文件所在的位置)的实际目录并将其命名为.nuget(注意,解决方案目录与实际文件系统目录不同,即使它们具有相同的名称).

  3. 在 .nuget 目录中创建一个名为 nuget.config 的文件。

  4. 将“nuget.config”添加到第 2 步中创建的解决方案目录中。

  5. 将以下文本放入 nuget.config 文件中:

    <?xml version="1.0" encoding="utf-8"?>
     <configuration>
      <config>
        <add key="repositorypath" value="$\..\..\..\..\Packages" />
      </config>
      <solution>
        <add key="disableSourceControlIntegration" value="true" />
      </solution>
    </configuration>
    

此配置文件将允许您将所有包整合到一个地方,这样您的文件系统上不会有 20 个不同的相同包副本。相对路径将根据您的解决方案目录架构而变化,但它应该指向所有解决方案通用的目录。

您需要在执行第 5 步后重新启动 Visual Studio。在您这样做之前,Nuget 将无法识别更改。

最后,您可能需要使用“解决方案的 Nuget 软件包管理器”卸载然后重新安装软件包。我不知道这是我运行的 Powershell 脚本的副作用,还是只是一种将 NuGet 重新启动的方法。完成所有这些步骤后,当我从 TFVC 中检出项目时,我复杂的构建架构可以完美地删除新包。

,

您是否尝试过通过 CLI 添加包源?鉴于 .NET Core 如何处理传递依赖项,获取相对复杂的解决方案所需的所有包可能会很棘手。

nuget sources Add -Name "MyServer" -Source \\myserver\packages

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...