【问题标题】:SolaceSystems.Solclient.Messaging, Version=10.0.0.0, exceptionSolaceSystems.Solclient.Messaging,版本=10.0.0.0,异常
【发布时间】:2017-07-28 11:35:46
【问题描述】:

尝试运行任何 Solace 应用时出现此异常

未知模块中发生了“System.BadImageFormatException”类型的未处理异常。

附加信息:无法加载文件或程序集“SolaceSystems.Solclient.Messaging,Version=10.0.0.0,Culture=neutral,PublicKeyToken=e191a36e57c23464”或其依赖项之一。试图加载格式不正确的程序。

如果有这个异常的处理程序,程序可以安全地继续。

在构建之前也会收到警告 警告 1 正在构建的项目的处理器架构“MSIL”与参考“SolaceSystems.Solclient.Messaging, Version=10.0.0.0, Culture=neutral, , processorArchitecture=AMD64”, “AMD64”的处理器架构不匹配”。这种不匹配可能会导致运行时失败。请考虑通过配置管理器更改项目的目标处理器体系结构,以便在项目和参考之间对齐处理器体系结构,或者依赖具有与项目的目标处理器体系结构匹配的处理器体系结构的参考。

这两个有关系吗?

【问题讨论】:

  • 您将项目构建为AnyCPU 目标架构,而SolaceSystems.Solclient.Messaging 构建为AMD64。更改项目的架构或获取该库的不同构建,与项目的目标架构兼容。
  • @PavelPájaHalbich,不,这是 SolaceSystems.Solclient.Messaging nuget 包的问题。 .Net 框架引发相同的错误,但是您必须执行不同的步骤来修复它
  • @ManushinIgor 你能告诉我修复它的步骤吗,我面临同样的问题。

标签: c# solace


【解决方案1】:

请检查您的 csproj 是否已正确配置为使用依赖于运行时的库。

你需要做什么:

  • 使用适当的运行时标记您的项目
  • 从 SolaceSystems.Solclient.Messaging 包中排除过时的目标

请使用以下示例:

<PropertyGroup>
  <!-- Mark you application as x86 for debugger -->
  <PlatformTarget>x86</PlatformTarget>

  <!-- Ask MSVS to use win-x86 runtime for debug/run. Check runtimes folder in the nupkg archive to see full list -->
  <RuntimeIdentifier>win-x86</RuntimeIdentifier>
  <!-- Mark you library, that it supports this runtime -->
  <RuntimeIdentifiers>win-x86</RuntimeIdentifiers>

</PropertyGroup>


<ItemGroup>
  <!-- Use new csproj format and package references, to simplify transitive dependencies -->
    <PackageReference Include="SolaceSystems.Solclient.Messaging" Version="10.1.1" >

    <!-- Exclude obsolete solace targets -->
    <ExcludeAssets>build</ExcludeAssets>
  </PackageReference>
</ItemGroup>

另请参阅其他库的相同问题:

【讨论】:

    【解决方案2】:

    您的平台不匹配。您可能会在 x86 平台上使用 x64 库,反之亦然。

    请注意,只要您在运行时安装正确的消息程序集(和相应的本机库),就可以安全地忽略有关处理器架构不匹配的警告。此警告是来自 Visual Studio 的提醒,以正确设置您的运行时环境。

    【讨论】:

      【解决方案3】:

      此解决方案适用于我们的团队,它通过 Web 服务加载 SolaceSystems.Solclient.Messaging.dll 并获得 BadImageFormatException: 在运行我们服务的应用程序池下,我们进入高级设置,看到“启用 32 位应用程序”设置为 true。将其设置回 false(默认值)允许服务正常运行。事实证明,此设置与我们混合使用 64 位操作系统、“Any CPU”构建和 Solace 客户端库的混合不兼容。

      【讨论】:

        【解决方案4】:

        遇到类似的错误。想分享一下。

        无法找到或打开 PDB 文件。 抛出异常:SolaceSystems.Solclient.Messaging.dll 中的“System.DllNotFoundException” 在 SolaceSystems.Solclient.Messaging.Native.Interop.SolaceNativeAPI.LogSetCallback(LogCallbackHandler 回调,IntPtr 用户) 在 SolaceSystems.Solclient.Messaging.Native.MAdapter.MSolClientSetLogCallback(LogCallbackHandler 回调,IntPtr 用户) 错误 - MAdapter:下午 4:01:22 |互操作适配器中遇到错误无法加载 DLL“libsolclient”:找不到指定的模块。 (来自 HRESULT 的异常:0x8007007E)在方法中:Init | System.DllNotFoundException:无法加载 DLL 'libsolclient':找不到指定的模块。 (来自 HRESULT 的异常:0x8007007E) 在 SolaceSystems.Solclient.Messaging.Native.Interop.SolaceNativeAPI.LogSetCallback(LogCallbackHandler 回调,IntPtr 用户) 在 SolaceSystems.Solclient.Messaging.Native.MAdapter.MSolClientSetLogCallback(LogCallbackHandler 回调,IntPtr 用户) 抛出异常:SolaceSystems.Solclient.Messaging.dll 中的“SolaceSystems.Solclient.Messaging.FatalErrorException”

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-08-20
          • 2017-12-25
          • 1970-01-01
          • 2014-10-17
          • 1970-01-01
          • 2017-04-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多