【问题标题】:Assemblies or files cannot be loaded when launching a exec启动 exec 时无法加载程序集或文件
【发布时间】:2010-03-02 11:57:51
【问题描述】:

当我将整个程序目录复制到另一台机器时,我遇到了以下异常。我可以使用哪些工具来调试它?谢谢。

未处理的异常:System.TypeInitializationException:类型初始化程序 r 'SomeClass' 抛出异常 n. ---> System.IO.FileLoadException: 无法加载文件或程序集 'SomeAssembly.dll, Version=0.0.0.0, Culture=neut ral, PublicKeyToken=null' 或其依赖项之一。此应用程序失败 d 启动,因为应用程序配置不正确。重新安装 应用程序可能会解决此问题。 (来自 HRESULT 的异常:0x800736B1) 文件名:'SomeAssembly.dll,版本 =0.0.0.0,Culture=neutral,PublicKeyToken=null' ---> System.Runtime.InteropServi ces.COMException (0x800736B1):此应用程序无法启动,因为 应用程序配置不正确。重新安装应用程序可能会解决这个问题 的问题。 (HRESULT 异常:0x800736B1)

【问题讨论】:

    标签: .net dependencies


    【解决方案1】:

    这是 Windows 错误,而不是 .NET 错误。错误代码为 14001,ERROR_SXS_CANT_GEN_ACTCTX,“应用程序无法启动,因为它的并排配置不正确。有关详细信息,请参阅应用程序事件日志。”

    查看 Windows 事件日志,它会告诉您忘记在目标计算机上安装的 DLL。如果它是混合模式程序集,那么它通常是 C/C++ 运行时 DLL,或者您部署了调试版本。

    【讨论】:

    • @bobugz:错误消息是“无法找到依赖程序集 Microsoft.VC90.DebugCRT 并且上次错误是引用的程序集未安装在您的系统上。”如何在我成功的机器中搜索“Microsoft.VC90.DebugCRT”?
    • 是的,这是 C/C++ 运行时 DLL,您确实部署了调试版本。构建你的发布版本,安装这个:microsoft.com/downloads/…
    • 安装你提供的链接后仍然抛出同样的异常。
    • 可能是因为您仍在使用调试版本。
    【解决方案2】:

    您可以使用fusion log 来调试此类问题。它将显示它在哪里搜索依赖项,以及是否找到它们,如果找到它们但加载失败,原因是什么。

    【讨论】:

      【解决方案3】:

      如果您只是复制文件,请检查 dll 是否被操作系统阻止。要检查这一点,请右键单击 dll,转到“属性”并查看对话框右下角的“高级”按钮。如果那里有一个显示“取消阻止”的按钮,请单击它。您必须对所有这些都这样做,或者使用 gacutil 实用程序将它们添加到 GAC。

      保罗

      【讨论】:

        猜你喜欢
        • 2023-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-17
        相关资源
        最近更新 更多