Nuget 包分发在运行时请求错误的版本,可能是由于之前的升级

问题描述 投票:0回答:1

我有一个 vs2019 C# 项目,它引用了一个名为 Diffplex 的 Nuget 项目。尽管我们第一次下载 Diffplex 是 1.7.0.0 版本,但我们已经通过 nuget 升级到 1.7.1.0.

当我们分发我们的程序时,我们在文件集中包含 Diffplex 1.7.1.0。然而,当我们运行我们的程序时,它会出错并提供屏幕截图。

我确实找到了这个问题的“答案”。这是在分发中包含“.exe.config”文件。但是我在这里并不满意。当我查看我的程序的 app.config 时,有这个绑定重定向语句,大概是由 nuget 进程添加的:

 <dependentAssembly><assemblyIdentity name="DiffPlex" publicKeyToken="1d35e91d1bd7bc0f" culture="neutral" /><bindingRedirect oldVersion="0.0.0.0-1.7.1.0" newVersion="1.7.1.0" /></dependentAssembly>

我猜这就是我需要 .exe.config 文件的原因。

但是,我不明白错误引用的是1.7.0.0版本,好像还在找那个版本,好像链接到了那个版本。在这个项目中我能找到的任何地方都没有提到 1.7.0.0。周围没有 DLL 的旧副本,解决方案中的任何文件中都没有提及。我唯一知道的是这是我们第一次下载这个 nuget 包时的版本。

我认为有两件事我不确定是否正确。 1. 如果我正在编译为我正在分发的相同版本,我不需要任何绑定重定向语句。 2. VS 或 nuget 中存在一个错误,导致旧版本仍然存在并导致问题。

谁能解释这种行为?我们开始不信任 nuget,因为这是我们唯一一次看到这种行为,我不希望出现这种情况。

谢谢, 戴夫

c# nuget visual-studio-2019
1个回答
0
投票

我的猜测是您正在使用的另一个程序集正在引用旧的 dll(1.7.0.0)。您可以检查正在使用的所有其他项目引用,并确保它们是否引用了 DiffPlex dll。

转到解决方案资源管理器并在引用下选择 DiffPlex,右键单击并选择属性。如果要使用新版本,请检查版本并将版本修改为1.7.1.0。

或者如异常消息所述,它需要 1.7.0.0,但您使用 app.config 文件中的 bindingRedirect 元素给它 1.7.1.0。问题是 bindingRedirect 有效。您可以在 app.config 中删除绑定重定向,然后它将引用旧版本。

© www.soinside.com 2019 - 2024. All rights reserved.