我的应用程序在我的机器上运行正常(当然/着名的最后一句话)。但是,当将其部署到网络上的另一台计算机时,它甚至不会启动。我在那台机器上运行了我的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(并且像我一样跑,因为我不是')时,我才能在远程/部署上运行应用程序后看到错误的消息在该机器上有任何“更特殊”的权限)。当我这样做时,我得到“无法找到运行此应用程序的运行时版本。”
如果我只是双击该应用程序,它会在没有呜咽的情况下死亡(没有错误的消息)。
答案 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"