0

我的应用程序在我的机器上运行良好(当然/著名的遗言)。但是,将其部署到网络上的另一台机器时,它甚至不会启动。我在那台机器上运行了我的 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(并以我自己的身份运行,因为我没有该机器上的“更多特殊”权限)。当我这样做时,我得到“无法找到运行此应用程序的运行时版本”。

如果我只是 2-click 应用程序,它会在没有呜咽声的情况下死掉(没有错误消息)。

4

1 回答 1

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 框架 - “无法找到运行此应用程序的运行时版本”

于 2012-06-12T23:08:40.530 回答