我正在使用7.5.0.0 amqmdnet.dll并使用MQ.NET类构建我的.net应用程序,但是在部署之后,如果目标计算机安装了7.1.0.0 MQ客户端,则应用程序抛出无法找到程序集 7.5.0.0 dll信息,是IBM的MQ客户端版本不兼容客户端吗?
System.IO.FileNotFoundException:无法加载文件或程序集 'amqmdnet,版本= 7.5.0.0,文化=中立, 或其中一个依赖项。该 系统找不到指定的文件。
我在官方网页上找不到与此相关的任何信息。
是否需要始终是目标计算机中的构建版本?我假设如果我使用7.1 dll,它也可以使用7.1更高版本。当我引用7.1.0.0时,我在项目文件中得到它。
<Reference Include="amqmdnet, Version=7.5.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\..\..\IBM\7.1.0.0\amqmdnet.dll</HintPath>
</Reference>
为什么它有7.5.0.0?任何想法(虽然我引用的版本是7.1.0.0)?
答案 0 :(得分:5)
向后兼容性“问题”不仅限于MQ,它还适用于所有.NET程序集。使用一个版本的.NET程序集编译应用程序并使用较低版本的.NET程序集运行它不受支持,不仅仅是MQ,而是每个.NET程序集。您必须使用与构建应用程序相同版本的程序集。如果您拥有该程序集的更高版本,则需要使用策略文件重定向.NET CLR以加载该.NET程序集的更高版本。