0

我在 Visual Studio 2019 (v.16.9.0) 中遇到了 Nuget 的一个奇怪(新)问题。

解决方案都是 ASP.NET Web 应用程序 (MVC)。我在本地局域网上运行。在 Nuget 包管理器中,“允许 Nuget 下载包”和“在构建期间自动检查丢失的包”都被选中。我正在使用 Packages.Config 进行管理,来源是https://api.nuget.org/v3/index.json。VS 能够通过 Windows Defender 防火墙进行通信。目标框架是.Net 4.7.2

第一个问题是当我在删除文件夹中的包后执行包还原时,它显示此错误:The requested operation cannot be executed on a file with a user-mapped section open。在我进行构建之后,将正确创建文件,包括新的/现有的 DLL。这些补充/刷新的 DLL 运行良好,程序运行。然而,奇怪的是,相关的 NUPKG 文件的内容为零(这显然会触发错误)。在我假设的 DLL 下载完成后,该消息最终会消失。到目前为止一切都很好,但 NUPKG 文件中的内容为零。

当我现在尝试更新一个包时,事情出错了,错误列表显示:

尝试还原软件包时出错。该文件不是有效的 nupkg。文件路径...

然后在完全重启 VS 后,我得到了这个:

从源“I:....\packages”检索“ABC.3.5.0.2”的包元数据时出错。'ABC' 是包列表中的第一个文件。因此,它似乎失败了,因为相关的 NUPKG 没有内容。

我可以将任何文件自由粘贴到包文件夹及其子文件夹中,这表明文件没有锁定。VS 也能够毫无问题地将包结构的其余部分写入文件夹。

恕我直言,这一定意味着某些东西专门锁定/阻止了 NUPKG 文件(或者可能在创建过程中删除它们的内容?)。搜索显示我看不到任何东西。

我什至尝试创建一个全新的解决方案。在创建过程中,上面相同的错误消息弹出了一个警告。我还尝试了其他一些我现有的解决方案并得到了相同的结果。我更新了 VS,然后我什至将 VS 重新安装到了最新版本,但都无济于事。

在 Azure Web App 部署期间定义依赖项后,我首先注意到了这个问题(Azure 部署工具可选地允许更新 Nuget 包)。在 Nuget 更新失败后,我将选项设置为空白并无论如何都已部署,其想法是稍后手动更新软件包。我不能确定,但​​我认为这是我发现问题的时候。这个过程是否可能在某处更改了 VS 配置设置?

在重新安装之前,我从 VS 内部打开了 devenv.exe.config 并将 IPV6 设置更改为 false。没有运气,所以我把它改回来了。我还对其中一个包进行了测试,直接从 Nuget 站点下载包并替换 VS 下载的版本,但我得到了同样的错误。

Install failed. Rolling back... Package 'System.Buffers 4.5.1' does not exist in project 'ClickAuth_Graph' Package 'System.Buffers 4.4.0' already exists in folder 'I:\My Drive\Backups\ClickAuth_Graph (01_03_21)\packages' Added package 'System.Buffers 4.4.0' to 'packages.config' Removing package 'System.Buffers 4.5.1' from folder 'I:\My Drive\Backups\ClickAuth_Graph (01_03_21)\packages' This file is not a valid nupkg. File path...\packages\System.Buffers.4.5.1.nupkg Central Directory Corrupt An attempt was made to move the file pointer before the beginning of the file. At line:1 char 1 • Update-Package System.Buffers +CategoryInfo NotSpecified: (:) [Update-Package], Exception o FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.UpdatePackageCommand

作为记录,我在投资组合中有一个陈旧的 Nuget 包。我不使用 Github,但预先设置了一个存储库。我最近没有向 Github 提交任何内容。

有没有专家可以提供帮助?

4

1 回答 1

1

你所描述的是一团糟。请尝试以下建议:

1)首先清理所有nuget缓存或删除C:\Users\xxx\.nuget\packages和下的所有缓存文件I:\My Drive\Backups\ClickAuth_Graph (01_03_21)\packages

我认为你已经下载了有效的nuget包,如果你的本地存在同名版本的nuget包,它总是会使用本地错误的nuget包。所以你必须删除它们,然后从 nuget 包源下载正确的包。

2)进入Tools --> Options --> Nuget Package Manager --> Package Sources并确保您已启用nuget.org包源,如果您有其他要使用的自己的提要,也启用它。

如果没有,请尝试关闭VS,删除nuget.config. C:\Users\xxx\AppData\Roaming\NuGet然后重新启动 VS 重新生成它。然后,如果有,请重新添加您自己的提要。

3)Tools --> Nuget Package Manager --> Package Manager Consoleupdate-package -reinstall下运行,然后删除项目的文件夹。binobj

4)您也可以尝试禁用 Azure 部署工具

此外,如果您有其他解决方案级别nuget.config,请检查其内容是否适合您的项目。如果它没用,你可以删除它们。

于 2021-03-05T03:10:56.023 回答