部署后如何在我的应用程序中解决TypeInitializationexception?

时间:2012-06-12 23:04:43

标签: c# .net deployment event-log typeinitializeexception

我的应用程序在我的机器上运行正常(当然/着名的最后一句话)。但是,当将其部署到网络上的另一台计算机时,它甚至不会启动。我在那台机器上运行了我的EventLog实用程序,它告诉我:

Type:Error
Source: .NET Runtime
Time Generated: 06/12/2012 15:35:12
Message: Application: duckbilledPlatypus.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.TypeInitialization
Exception
Stack:
   at duckbilledPlatypus.PlatypusMainForm..ctor()
at duckbilledPlatypus.Program.Main()

所以这是我主要形式的构造函数中的问题,显然......我承认,它有点“忙”:

InitializeComponent();

foreach (string arg in Environment.GetCommandLineArgs())
{
    if (arg == "-DEBUG")
    {
        InDebugMode = true;
        break;
    }
}

SuspendLayout();
tsch = new ToolStripControlHost(dateTimePickerScheduleDate);
toolStripPlatypusMain.Items.Add(tsch);

CreateTableLayoutPanelAndChildren();

LimitPlatypusIDTextBoxesToOneChar();
ShareEventsAmongDynamicTextBoxes();

SetAllPlatypusDataControlsReadOnly();
ResumeLayout();

这看起来有问题吗? (除了ToolStripControlHost之外,它都是非常标准的东西。)

现在关于框架版本:事件日志是否报告用于创建我的应用程序的框架版本,或者试图运行应用程序的机器上安装的框架版本?如果前者和后者没有安装该框架,那就是问题,对吧?

因此,如果这可能是问题,我如何确定该计算机上安装的.NET运行时版本?

更新

我不知道为什么会这样,但是只有当我右键单击并选择Run As(并且像我一样跑,因为我不是')时,我才能在远程/部署上运行应用程序后看到错误的消息在该机器上有任何“更特殊”的权限)。当我这样做时,我得到“无法找到运行此应用程序的运行时版本。”

如果我只是双击该应用程序,它会在没有呜咽的情况下死亡(没有错误的消息)。

1 个答案:

答案 0 :(得分:1)

查看

  

查看%WINDIR%\ Microsoft.NET \ Framework目录

确定安装了哪些版本的.NET。

http://msdn.microsoft.com/en-us/library/y549e41e.aspx

尝试在有问题的计算机上运行Fusion Log Viewer。它将提供有关绑定失败的详细信息。

http://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.100).aspx

确保以管理员身份运行。如果你不这样做,它就会默默地失败。

<强>更新

根据您的错误“无法找到运行此应用程序的运行时版本。”,我建议您不要在应用程序所针对的框中安装相同版本的.NET。您是否使用上述步骤验证了已安装的版本?

另见

.Net framework - "unable to find a version of the runtime to run this application"