ChatGPT解决这个技术问题 Extra ChatGPT

找到的程序集的清单定义与程序集引用不匹配

我正在尝试在 C# Windows 窗体应用程序 (Visual Studio 2005) 中运行一些单元测试,但出现以下错误:

System.IO.FileLoadException:无法加载文件或程序集“实用程序,版本=1.2.0.200,文化=中性,PublicKeyToken=764d581291d764f7”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (HRESULT 例外:0x80131040)** 在 x.Foo.FooGO() 在 x.Foo.Foo2(String groupName_) 在 Foo.cs:第 123 行在 x.Foo.UnitTests.FooTests.TestFoo() 在 FooTests.cs :第 98 行** System.IO.FileLoadException:无法加载文件或程序集“实用程序,版本 = 1.2.0.203,文化 = 中性,PublicKeyToken = 764d581291d764f7”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040)

我查看了我的参考资料,我只有一个对 Utility version 1.2.0.203 的参考资料(另一个是旧的)。

关于我如何找出试图引用这个 DLL 文件的旧版本的任何建议?

此外,我认为我的硬盘驱动器上什至没有这个旧组件。有什么工具可以搜索这个旧版本的程序集吗?

就我而言,这是因为我有两个项目加载了不同版本的同一个 DLL。 (希望这对某人有帮助!)

C
Callum Watkins

.NET 程序集加载器:

找不到 1.2.0.203

但确实找到了 1.2.0.200

此程序集与请求的内容不匹配,因此您会收到此错误。

简单来说,就是找不到被引用的程序集。确保它可以通过将其放入 GAC 或应用程序路径中找到正确的程序集。另见https://docs.microsoft.com/archive/blogs/junfeng/the-located-assemblys-manifest-definition-with-name-xxx-dll-does-not-match-the-assembly-reference


但是当我查看项目的参考资料时,它指向 1.2.0.203 ..。似乎没有任何东西指向 1.2.0.200
完全正确 - 它正在寻找 1.2.0.203,但它找到了 1.2.0.200。找出该文件的位置并将其替换为正确的版本。
我在这里问了一个类似的问题并得到了一个可行的解决方案:stackoverflow.com/questions/4187907/…
检查参考版本,然后在 packages.config 和 Web.config 中查看是否相同
这条消息每次都让我感到困惑。好像写反了。我希望它抱怨您要求加载的版本,而不是它找到的版本。很高兴我不是唯一一个弄错的人!
C
Community

您可以做几件事来解决此问题。首先,使用 Windows 文件搜索在硬盘驱动器中搜索程序集 (.dll)。获得结果列表后,执行查看->选择详细信息...,然后检查“文件版本”。这将在结果列表中显示版本号,因此您可以看到旧版本可能来自何处。

另外,就像 Lars 所说,检查您的 GAC 以查看那里列出的版本。 This Microsoft article 指出,在 GAC 中找到的程序集在构建期间不会在本地复制,因此您可能需要在全部重新构建之前删除旧版本。 (有关创建批处理文件为您执行此操作的说明,请参见我对 this question 的回答)

如果您仍然无法确定旧版本的来源,您可以使用 Visual Studio 附带的 fuslogvw.exe 应用程序来获取有关绑定失败的更多信息。 Microsoft 有关于此工具 here 的信息。请注意,您必须通过将 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion\EnableLog 注册表项设置为 1 来启用日志记录。


不要忘记文件版本不是程序集标识的一部分。程序集版本是,但不必与文件版本相同!
如果将 fuslogvw 用于服务,请阅读 blogs.msdn.com/b/junfeng/archive/2004/02/14/72912.aspx
搜索文件名解决了我的问题。我的 Temporary ASP.Net 文件夹中有一个旧版本的 dll,而 InstallShield 正在使用它而不是最新版本!清洁解决方案,重建,重新启动PC什么也没做。在本地运行良好,每次部署时都会爆炸。
建立后,我的网站立即运行良好,但不久之后,这个问题就出现了。
我编辑了这个答案,改为说汇编版本。
N
Nathan Bedford

我自己也遇到了这个问题,我发现这个问题与其他人遇到的问题不同。

我的主要项目引用了两个 DLL:CompanyClasses.dll 和 CompanyControls.dll。我收到一个运行时错误说:

无法加载文件或程序集“CompanyClasses,Version=1.4.1.0,Culture=neutral,PublicKeyToken=045746ba8544160c”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配

问题是,我的系统上没有任何版本号为 1.4.1 的 CompanyClasses.dll 文件。 GAC 中没有,应用程序文件夹中没有……任何地方都没有。我搜索了整个硬盘。我拥有的所有 CompanyClasses.dll 文件都是 1.4.2。

我发现真正的问题是 CompanyControls.dll 引用了 CompanyClasses.dll 的 1.4.1 版本。我刚刚重新编译了 CompanyControls.dll(在它引用 CompanyClasses.dll 1.4.2 之后),这个错误对我来说就消失了。


+1 当我的一个 DLL 引用旧版本的 Caliburn Micro 时,我也发生了类似的事情。
我也是,您的经历激发了我寻找需要的地方,并解决了我的问题。
另一种选择是打开 CompanyControls 项目,右键单击 CompanyClasses.dll 引用 -->属性 --> SpecificVersion = false
这在 xamarin 应用程序中很常见。我的 xamarin.forms 项目与 xamarin.droid 项目不同。我刚看到你的帖子,我认出来了。
如果 CompanyClasses.dll 已签名,则单独使用 SpecificVersion = false 不会删除它。您需要一个 bindingredirect
P
Peter Mortensen

以下将任何程序集版本重定向到版本 3.1.0.0。我们有一个脚本,它将始终在 App.config 中更新此引用,因此我们不必再次处理此问题。

通过反射,您可以获得程序集 publicKeyToken 并从 .dll 文件本身生成此块。

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
 <dependentAssembly>
    <assemblyIdentity name="Castle.Core" publicKeyToken="407dd0808d44fbdc" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="3.1.0.0" />
  </dependentAssembly>
</assemblyBinding>

请注意,如果没有 XML 命名空间属性 (xmlns),这将不起作用。


这对我有用。我将“newVersion=3.3.3”更改为“newVersion=3.1.0”
如果可以避免的话,最好不要走重新绑定路线。当那个虫子来咬你时,它会咬得很紧。
我的问题是重定向指向不存在的程序集。App.Config 保存了我安装的最新 NuGet 包的程序集信息。当我后来降级这些软件包时,它并没有清理它。这是一个 .NET 标准类库,受到 4.7.2 框架单元测试项目的影响。单元测试项目在运行时出现的问题..
@D-Sect 是对的。如果您的源代码控制表明 web.config 发生了更改(因为您一直在使用 NuGet),那么您最好将那些 bindingRedirects 撤出。降级 NuGet 不会清除绑定重定向
T
Tad

如果您使用的是 Visual Studio,请尝试“干净的解决方案”,然后重新构建您的项目。


这通常是我的解决方案。通常,删除 binobj 即可。基本上,我以前引用的东西仍然坐在那里试图满足相同的要求。例如,旧版本是我直接引用的东西,而新版本是在 NuGet 上。
从 TFS 拉出后,几个 DLL 遇到了这个问题。该解决方案为我修复了它。
为我工作。删除了 bin amd obj 文件夹并解决了问题。
谢谢,也为我工作,只是删除了 bin 文件夹。
“清洁解决方案”对我没有任何帮助。 (微软????)但删除 bin 和 obj 文件夹修复了它。谢谢!
R
RayLoveless

https://i.stack.imgur.com/SUDUK.png


该设置仅在编译时有效。编译后,它需要与编译时完全相同的程序集版本。请参阅stackoverflow.com/questions/24022134/…
c
codeMonkey

我现在要让每个人都大吃一惊。 . .

从 .config 文件中删除所有 <assemblyBinding> 引用,然后从 NuGet 包管理器控制台运行此命令:

Get-Project -All | Add-BindingRedirect

也为我工作。谢谢
你节省了我的时间👌👌
这仅在包管理格式为 packages.config 时有效,如果您使用没有 packages.config 的 2017 csproj,它不会工作:(
头脑正式炸了
随着时间的推移,我已经更新了这个产品......有时只需要刷新工件并重新做一遍。我认为我能做的唯一不同的事情就是创建一个新项目并手工挑选其中的元素......这个命令让我不必这样做......有一天我将不得不支付技术债务?也许,但不是今天邪恶。
L
Levi Fuller

就我而言,此错误是在运行 ASP.NET 应用程序时发生的。解决方案是:

删除项目文件夹中的obj和bin文件夹

Clean 不起作用,rebuild 不起作用,所有引用都很好,但它没有编写其中一个库。删除这些目录后,一切正常。


谢谢,Levi Fuller。这个答案应该更高;对于我的情况,它是正确的!对我来说,当我制作 web.config 的备份副本时,这个错误就开始了,Visual Studio 一直在加载这个配置文件而不是实际的配置,即使在我删除了重复的副本之后也是如此。这解决了它。谢谢。
也为我工作。仍然不确定为什么这有效:(
太感谢了。经过数小时的故障排除后,这终于让它工作了。就我而言,问题发生在我不小心升级了一些 NuGet 包之后,然后恢复了我的工作副本(packages.config、.csproj)中的更改。
P
Peter Mortensen

我添加了一个 NuGet 包,却发现我的应用程序的黑盒部分引用了旧版本的库。

我删除了包并引用了旧版本的静态 DLL 文件,但 web.config 文件从未从以下位置更新:

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
    <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="6.0.0.0" />
</dependentAssembly>

当我卸载软件包时它应该恢复到什么:

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.5.0.0" />
</dependentAssembly>

我已经看到了,至少对于使用 NuGet 时的实体框架模块,如果您右键单击解决方案,转到管理解决方案的 NuGet 包,然后选择已安装的包 > 全部,选择该模块,选择管理,您可以通常从您的项目中取消选择它。假设供应商进行了尽职调查,这应该可以清除此类事情而无需手动进行。但是,如果这就是您删除它的方式,那么显然有时它们不会捕获。
N
Neal Tibrewala

我刚刚遇到了这个问题,问题是我的应用程序调试目录中有 .dll 的旧副本。您可能还想检查那里(而不是 GAC),看看您是否看到它。


我们只是迁移到另一台服务器时遇到了这个问题,因为我们保留了备份。删除备份副本后工作。谢谢 :)
G
Glade Mellor

在我的情况下,它是 C:\WINDOWS\Microsoft.NET\Framework\~\Temporary ASP.NET Files\ 目录中的旧版本 DLL。您可以删除或替换旧版本,也可以删除并重新添加对项目中 DLL 的引用。基本上,任何一种方式都会创建一个指向临时 ASP.NET 文件的新指针。


当我关闭 Visual Studio、停止 IIS 并删除所有临时 ASP.NET 文件时,这对我有用。请注意,如果在 64 位计算机上,以及在 .NET 2.0 和 4.0 文件夹中,Framework 和 Framework64 文件夹中可能有文件!
我使用 Windows 开始菜单搜索功能来查找由我的解决方案创建的所有 DLL,然后将它们全部删除,无论它们在哪里。我可以毫无顾忌地做到这一点,因为它们应该只在我的 Visual Studio 调试期间创建。由于 VS 将重建这些丢失的 DLL,并且我的解决方案之外的任何内容都不应引用它们,这对我来说是一个“安全”的操作。
S
Sire

对我们来说,问题是由其他原因引起的。 DevExpress 组件的许可文件包括两行,一行用于未安装在此特定计算机上的旧版本组件。从许可证文件中删除旧版本解决了该问题。

烦人的部分是错误消息没有表明是什么引用导致了问题。


就我而言,升级到新的 DevExpress 版本后,表单的 .resx 文件包含对旧的已卸载库版本的引用。我必须在代码视图中打开 .resx 并将版本更正为新版本或删除无效条目。
P
Peter Mortensen

我想补充一点,我正在创建一个基本的 ASP.NET MVC 4 项目,并通过 NuGet 添加了 DotNetOpenAuth.AspNet。在我为 Microsoft.Web.WebPages.OAuth 引用了一个不匹配的 DLL 文件后,这导致了同样的错误。

为了修复它,我做了一个 Update-Package 并清理了解决方案以进行完全重建。

这对我有用,有点懒惰,但时间就是金钱:-P


对我来说类似的答案。 Update-Package -reinstall 重新安装同一版本的所有 NuGet 包。
这很棒;感谢您的发布。我尝试了所有其他很棒的建议,但这是成功的解决方案。感谢那些仍然愿意发布替代解决方案的人,即使有 80 个可用的解决方案
这为我解决了。我最近安装的公司库使用的是导致不匹配的库的较旧参考版本。安装后,这抛出了错误。 Update-Package -reinstall 将其按顺序恢复
G
Guy Starbuck

如果您尝试使用反射进行后期绑定,如果您要绑定的程序集具有强名称或更改了其公钥标记,则会引发完全相同的错误。即使实际上没有找到任何具有指定公钥令牌的程序集,错误也是相同的。

您需要添加正确的公钥令牌(您可以在 dll 上使用 sn -T 获取它)来解决错误。希望这可以帮助。


请详细说明 - 什么是“sn -T”?我在哪里添加公钥令牌?
“sn.exe”是Visual Studio自带的一个工具,它是一个命令行工具,可以在Visual Studio命令提示符下运行。只需运行 Visual Studio 命令提示符(从开始菜单),导航到包含程序集的文件夹,然后键入“sn -T ”,其中 是 dll 的全名。这将获取程序集“令牌”信息。一旦你有了这个,当你使用反射进行后期绑定时,将令牌信息输入到程序集 id 字符串中(即,“Assembly=MyAssembly.dll,Public Key Token=
感谢您的回答。在我的 App.ini 中引用配置部分时出现此错误。我最近签署了程序集,因此必须使用新的(正确的)令牌更新 PublicKeyToken=null。
M
Marek Schwarz

是否可能您在 assemblyBinding 尝试中有错误的 nugget 版本:

移除 web.config/app.config 中的所有程序集绑定内容:

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.1.3.0" newVersion="3.1.3.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="adb9793829ddae60" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.1.3.0" newVersion="3.1.3.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.ComponentModel.Annotations" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.2.1.0" newVersion="4.2.1.0" />
  </dependentAssembly>
</assemblyBinding>

键入包管理器控制台: Add-BindingRedirect 生成所有必要的绑定重定向运行您的应用程序,看看它是否正常工作。如果没有,请添加软件包控制台错过的任何缺少的绑定重定向。


A
AEON Blue Software

我的问题是将源代码复制到新机器上,而没有拉出任何引用的程序集。

我没有修复错误,所以我匆忙删除了 BIN 目录。重建了我的源代码,从那时起它就可以工作了。


C
Contango

我的情况与 Nathan Bedford 的帖子非常相似,但略有不同。我的项目也以两种方式引用了更改后的 dll。 1)直接和 2)间接通过引用一个组件(类库),该组件本身具有对已更改 dll 的引用。现在我的组件 (2) 的 Visual Studio 项目引用了更改后的 dll 的正确版本。但是组件本身的版本号没有改变。结果,新版本项目的安装未能替换客户端计算机上的该组件。

最终结果:直接引用 (1) 和间接引用 (2) 指向客户端计算机上更改的 dll 的不同版本。在我的开发机器上它运行良好。

解决方案:删除应用程序;从应用程序文件夹中删除所有 DLL;重新安装。在我的情况下很简单。


P
Peter Mortensen

在 Team Foundation Server 的构建服务上构建时出现此错误。事实证明,我的解决方案中有多个项目,使用的是通过 NuGet 添加的同一库的不同版本。我使用 NuGet 删除了所有旧版本,并添加了新版本作为所有人的参考。

Team Foundation Server 将所有 DLL 文件放在一个目录下,当然每次只能有一个特定名称的 DLL 文件。


另一种方法是单击“管理解决方案的 NuGet 包...”并将您的测试项目和正在测试的项目更新为相同的(最新)版本。
M
Mike Murphy

我会让别人从我的愚蠢中受益。我对一个完全独立的应用程序有一些依赖项(我们称之为 App1)。该 App1 中的 dll 被拉入我的新应用程序 (App2)。每当我在 APP1 中进行更新时,我都必须创建新的 dll 并将它们复制到 App2 中。出色地。 . .我厌倦了在 2 个不同的 App1 版本之间复制和粘贴,所以我只是在 dll 中添加了一个“NEW_”前缀。

出色地。 . .我猜测构建过程会扫描 /bin 文件夹,当它不正确地匹配某些内容时,它会发出与上述相同的错误消息。我删除了我的“new_”版本,它只是花花公子。


P
Peter Mortensen

我的 app.config 包含一个

<bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.11.0"/>

对于 npgsql。不知何故,在用户的机器上,我的 app.exe.config 丢失了。我不确定它是否是一个愚蠢的用户、安装程序故障,或者是反病毒软件。替换文件解决了这个问题。


C
Cole

在尝试了上述许多没有修复的解决方案之后,它归结为确保在 Visual Studio 的应用程序中打开“自动生成绑定重定向”。

https://i.stack.imgur.com/bXLq6.png

可以在此处找到有关启用自动绑定重定向的更多信息:https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/how-to-enable-and-disable-automatic-binding-redirection


L
Ladislav Mrnka

我刚刚找到了另一个导致此错误的原因。我从特定库的所有版本中清除了我的 GAC,并参考与可执行文件一起部署的特定版本构建了我的项目。当我运行该项目时,我在搜索更新版本的库时遇到了这个异常。

原因是publisher policy。当我从 GAC 卸载库的版本时,我也忘记卸载发布者策略程序集,因此程序集加载器没有使用我本地部署的程序集,而是在 GAC 中找到了发布者策略,告诉它搜索更新的版本。


u
uli78

对我来说,“Local.testtesttings”文件中的代码覆盖率配置“导致”了这个问题。我忘了更新那里引用的文件。


d
dhiraj1mumbai

只需删除项目 bin 文件夹的内容并重建解决方案即可解决我的问题。


嗯,你知道吗,你只是帮我解决了我的痛苦,真的谢谢
C
ChrisBeamond

此类问题的一般答案是像其他答案一样使用绑定重定向。然而,这只是问题的一部分——您需要知道您正在使用的程序集文件的正确版本。 Windows 属性并不总是准确的,nuget 也不总是准确的。

获得正确版本信息的唯一方法是分析文件本身。一个有用的工具是 dotPeek。根据我的经验,dotPeek 中列出的程序集名称总是准确的。

例如,此文件的正确绑定如下:

<dependentAssembly>
    <assemblyIdentity name="System.ComponentModel.Annotations" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-4.2.1.0" newVersion="4.2.1.0"/>
</dependentAssembly>

Windows 资源管理器说该文件是 4.6.26515.06,nuget 说它是一个 5.0.0.0 文件。 dotPeek 说它是 4.2.1.0,这是在我们的软件中正常工作的版本。另请注意,公钥和文化很重要,dotPeek 也会显示此信息。

https://i.stack.imgur.com/KcEtq.png


!!!!!!!!!!这立即起作用:请注意,对我来说有效的绑定与 oldVersion -> newVersion 有关。我的程序集清单指向旧版本,但在升级到同一个 DLL 的更高版本后从未重定向到新版本的程序集。
M
Mike Gledhill

这是我解决此问题的方法。

从异常消息中,获取“问题”库的名称和“预期”版本号。

https://i.stack.imgur.com/8XKgk.png

在您的解决方案中找到该 .dll 的所有副本,右键单击它们,然后检查它是哪个版本的 .dll。

https://i.stack.imgur.com/QxmEp.png

好的,所以在这个例子中,我的 .dll 肯定是 2.0.5022.0 (所以异常版本号是错误的)。

搜索解决方案中所有 .csproj 文件的异常消息中显示的版本号。将此版本号替换为 dll 中的实际版本号。

所以,在这个例子中,我将替换这个......

<Reference Include="DocumentFormat.OpenXml, Version=2.5.5631.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />

... 有了这个...

<Reference Include="DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />

任务完成 !


如果我的 csproj 文件没有引用版本怎么办?
P
Peter Mortensen

问题已经有了答案,但是如果同一解决方案中不同版本的NuGet包出现问题,可以尝试以下方法。

打开 NuGet 包管理器,您会看到我的服务项目版本与其他版本不同。

然后更新包含旧版本包的项目。

https://i.stack.imgur.com/dYt7J.png


G
Ganesh Londhe

清理并重建解决方案可能不会替换输出目录中的所有 dll。

我建议尝试将文件夹从“bin”重命名为“oldbin”或“obj”重命名为“oldobj”

然后再次尝试构建您的解决方案。

如果您使用任何第三方 dll,则需要在成功构建后将其复制到新创建的“bin”或“obj”文件夹中。

希望这对你有用。


m
marc_s

没有解决方案对我有用。我尝试了干净的项目解决方案,删除 bin,更新包,降级包等等......两个小时后,我从项目中加载了带有程序集的默认 App.config,并在那里我更改了错误的参考版本:

<dependentAssembly>
    <assemblyIdentity name="Microsoft.IdentityModel.Logging" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.5.0.0" newVersion="5.5.0.0" />
</dependentAssembly>

至:

<dependentAssembly>
    <assemblyIdentity name="Microsoft.IdentityModel.Logging" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.14.0.0" newVersion="5.5.0.0" />
</dependentAssembly>

在此之后,我清理了项目,再次构建它并且它工作。没有警告没有问题。


t
toralux

这个问题很老了,最近我在使用 Azure DevOps Yaml 管道和 Dotnet Core 3.1 时遇到了同样的错误消息。这个问题与尝试解决的其他答案有些不同,所以我将分享我的解决方案。

我为自己的 nuget 包提供了许多项目的解决方案。我偶然在 *.csproj 文件中添加了版本标签,如下所示:

  <Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <Version>1.0.0</Version>
  </PropertyGroup>

我使用 Yaml 和 DotnetCoreCLI@2 任务为所有项目打包了 nuget 包:

 - task: DotNetCoreCLI@2
   displayName: 'pack'
   inputs:
     command: pack
     nobuild: true
     configurationToPack: 'Release'
     includesource: true
     includesymbols: true
     packagesToPack: 'MyNugetProject1.csproj;**/MyNugetProject2.csproj'
     versioningScheme: 'byEnvVar'
     versionEnvVar: 'GitVersion.SemVer'

问题是 *.csproj 文件中的版本与环境变量 GitVersion.SemVer(由 input-"versionEnvVar" 指定)中的版本不匹配。

删除 *.csproj 文件中的所有 <Version>1.0.0</Version>-tags 后,dll 的程序集/文件版本由环境变量自动分配,并且 nuget 和 dll(程序集/文件版本)将具有相同的版本并解决了问题。