私のアプリは私のマシンで正常に動作します(もちろん/有名な最後の言葉)。ただし、ネットワーク上の別のマシンに展開すると、起動すらしません。そのマシンで 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 ランタイムのバージョンを確認するにはどうすればよいでしょうか?
アップデート
これがなぜなのかはわかりませんが、リモート/展開でアプリを実行した後、右クリックして [実行] を選択した場合にのみ、エラーメッセージを表示できました (何も持っていないため、自分自身として実行しました)。そのマシンの「より特別な」特権)。そうすると、「このアプリケーションを実行するランタイムのバージョンが見つかりません」というメッセージが表示されました。
アプリを 2 回クリックするだけで、気まぐれ (エラー メッセージなし) なしで終了します。