24

我创建了一个 C# 应用程序并将其安装在我的测试盒上。我的应用程序在我的开发盒上运行完美,但是当我安装在另一台机器上时,它在 Main() 中崩溃。我得到事件类型:CLR20r3

这是事件消息

    Problem signature:
    Problem Event Name: CLR20r3
    Problem Signature 01:   logfileviewer.exe
    Problem Signature 02:   1.0.0.0
    Problem Signature 03:   4f356c9c
    Problem Signature 04:   LogFileViewer
    Problem Signature 05:   1.0.0.0
    Problem Signature 06:   4f356c9c
    Problem Signature 07:   94
    Problem Signature 08:   44
    Problem Signature 09:   System.IO.FileNotFoundException
    OS Version: 6.1.7601.2.1.0.256.1
    Locale ID:  1033
    Additional Information 1:   0a9e
    Additional Information 2:   0a9e372d3b4ad19135b953a78882e789
    Additional Information 3:   0a9e
    Additional Information 4:   0a9e372d3b4ad19135b953a78882e789

我使用了详细信息并在 IL Disassembler 中查找错误代码并返回以下内容...

    Method #5 (06000094) 
    -------------------------------------------------------
    MethodName: .ctor (06000094)
    Flags : [Public] [HideBySig] [ReuseSlot] [SpecialName] [RTSpecialName] [.ctor] (00001886)
    RVA : 0x000081d0
    ImplFlags : [IL] [Managed] (00000000)
    CallCnvntn: [DEFAULT]
    hasThis 
    ReturnType: Void
    No arguments.

.NET 4.0 已被卸载并重新安装在系统上,并没有改变任何东西。我在网上搜索了所有有同样问题的人似乎都没有解决方案。我现在已经花了一天半的时间来解决这个问题。我不想错过我无法启动应用程序的最后期限。

这是我的 Main() 中唯一的代码

    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new frmMain());
    }

以下是事件查看器的详细信息

    Application: LogFileViewer.exe
    Framework Version: v4.0.30319
    Description: The process was terminated due to an unhandled exception.
    Exception Info: System.IO.FileNotFoundException
    Stack:
        at LogFileViewer.frmMain.InitializeComponent()
        at LogFileViewer.frmMain..ctor()
        at LogFileViewer.Program.Main()

事件数据

    Application: LogFileViewer.exe 
    Framework Version: v4.0.30319 
    Description: The process was terminated due to an unhandled exception. 
    Exception Info: System.IO.FileNotFoundException 
    Stack: at LogFileViewer.frmMain.InitializeComponent() at LogFileViewer.frmMain..ctor() at LogFileViewer.Program.Main() 

不确定设计器如何拥有 FileNotFound 异常。我正在使用 DotNetBar.dll 并且我从安装目录中引用它,所以这应该很好。如果你愿意,我可以发布我的设计师,但那里有很多。

4

5 回答 5

22

当我的应用程序依赖于部署机器上不存在的引用程序集时,我看到了同样的问题。我不确定“从安装目录中引用 DotNetBar”是什么意思 - 确保它在您的项目中设置为CopyLocal=true,或者在您的开发和生产机器上存在于相同的完整路径中。

于 2012-02-11T23:44:27.037 回答
3

当我在以前在 XP 机器上维护的 Windows 7 机器上构建应用程序时,我遇到了同样的问题。

该程序在为 Debug 构建时运行良好,但在为 Release 构建时失败并出现此错误。我在项目的属性页面上找到了答案。转到“构建”选项卡并尝试将平台目标从“任何 CPU”更改为“x86”。

于 2014-05-21T21:05:20.450 回答
3

.NET 有两个 CLR 2.0 和 4.0。CLR 2.0 一直有效到 .NET 框架 3.5。CLR 4.0 从 .NET 4.0 开始工作。您的解决方案可能使用与您的参考程序集不同的 CLR。在您的本地开发环境中,您可能同时拥有 CLR,因此您没有遇到任何问题。但是,当您迁移到部署环境时,它们可能只有一个 CLR,您会收到此错误。

于 2015-12-16T10:42:43.063 回答
0

整个早上都在为此奋斗,现在已经解决了,为什么会这样。发帖希望对别人有帮助

我安装了 Krypton.Toolkit,它自动将这些工具添加到 Visual Studio 工具箱中。然后我将工具添加到设计器,它会自动将 dll 添加到项目引用中,但是工具包被标记为 CopyLocal=false

我构建了一个安装程序,使用发布构建文件夹中的所有 dll(当然上面的 dll 不存在)。

设置 copylocal=true,然后重建安装程序,一切正常。

于 2012-11-21T14:30:49.413 回答
-4

解决 CLR20r3 问题集 - Local User Policy \ Computer Configuration \ Windows Settings \ Security Settings \ Local Policies \ Security Options - System cryptography:使用符合 FIPS 140 的加密算法,包括加密、散列和签名 - 禁用

于 2015-06-09T09:04:27.457 回答