【问题标题】:C# windows application Event: CLR20r3 on application startC# windows 应用程序事件:应用程序启动时的 CLR20r3
【发布时间】:2012-03-03 22:05:47
【问题描述】:

我创建了一个 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 并且我从安装目录中引用它,所以这应该很好。如果你愿意,我可以发布我的设计师,但那里有很多。

【问题讨论】:

  • 捕获该 FileNotFoundException 异常并查看其详细信息以了解丢失的文件。我敢打赌它是 DotNetBar.dll
  • 是的,它是 DotNetBar。即使我从名为“resources”的文件夹中引用它,我也必须将其移动到应用程序根目录。

标签: c# .net file-not-found


【解决方案1】:

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

【讨论】:

  • 是的,或者您可以尝试使用智能程序集之类的工具,该工具允许在可执行文件中嵌入依赖项而不是对其进行混淆,以便您知道它是否是由缺少 dll 引起的。
  • 即使我从我创建的资源文件夹中引用 DotNetBar.dll。看来我实际上必须在我的 .exe 所在的根目录中拥有 .dll 。我对此没有任何解释。也许有人可以告诉我原因。所以对于其他有同样问题的人。将您引用的任何 .dll 移动到根文件夹,看看是否能解决您的问题。
【解决方案2】:

整个上午都在与这个问题作斗争,现在已经解决了它以及它发生的原因。发帖希望对他人有所帮助

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

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 对于那些认为它没有帮助的答案的人,请考虑告知原因。在其他来源中也可以看到同样的推理:clr20r3 - resolution
      【解决方案5】:

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

      【讨论】:

      • 对于看到此内容的其他人:您可以尝试通过更新引用的程序集来解决此问题,而不是要求客户端安装较旧的 CLR。我的同事正在将一个项目更新到 4.5 并遇到此问题。我的第一反应是“你更新你的 nuget 包了吗?”果然……
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多