アプリを展開しようとすると、上記のエラーが発生しますが、特定のシナリオでのみ発生します。
- VS IDE の場合: 問題ありません。アプリは正常に動作します
- Windows エクスプローラーで .exe をダブルクリック: 問題ありません。アプリは正常に動作します。
- Windows エクスプローラーで .exe を右クリックして [別のユーザーとして実行] を選択すると、上記のエラーが表示され、実行されません。
- .exe が展開されているリモート マシンの Windows エクスプローラーで .exe を右クリックし、[別のユーザーとして実行] を選択すると、上記のエラーが表示され、実行されません。
- .exe が展開されているリモート マシン上の .exe へのデスクトップ リンク/ショートカットをダブルクリックすると、非常にあいまいなエラー メッセージが表示され、アプリが実行されません。
Windows イベント ログ (シナリオ 3 での失敗後) からの情報は次のとおりです。
Type: Error
Source: .NET Runtime
Message: Application: duckbilledPlatypus.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.TypeInitializationException
Stack: at duckbilledPlatypus.duckbilledPlatypusMainForm..ctor()
at duckbilledPlatypus.Program.Main()
私は、ストローをつかんで、さまざまなことを検索して試して、バタバタしています。ここに1つあります:
App.config ファイル (以下) のレイアウトに何か問題がありますか?
注: "supportedRuntime version="v4.0.30319" を追加しましたが、違いはありませんでした。"configSections" セクションに "startup" を追加する必要がありますか?
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,
log4net"/>
</configSections>
<log4net>
<appender name="ConsoleAppender"
type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{ISO8601} [%thread]
%-5level %-50.50logger | %message%newline"/>
</layout>
</appender>
<appender name="DebugAppender"
type="log4net.Appender.DebugAppender">
<immediateFlush value="true"/>
<layout type="log4net.Layout.SimpleLayout"/>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="ConsoleAppender"/>
</root>
</log4net>
<startup>
<supportedRuntime version="v4.0"
sku=".NETFramework,Version=v4.0"/>
<supportedRuntime version="v4.0.30319" />
</startup>
</configuration>
注: 次の .NET バージョンがインストールされています: 1.0.3705; 1.1.4322; 2.0.50727; 3.0; 3.5; および 4.0.30319
アプリをデプロイしたマシンのユーザーもそうです...
スタートアップを次のように変更した場合:
<startup>
<supportedRuntime version="v4.0.30319"
sku=".NETFramework,Version=v4.0.30319" />
</startup>
(IDE でも) 「このアプリケーションを実行するには、まず、.NET Framework の次のバージョンのいずれかをインストールする必要があります: .NETFramework,Version=4.0.30319 .NETFramework,Version- をダウンロードしてインストールしますか?」 v4.0.30319 今?」
ただし、これを使用する場合:
<startup>
<supportedRuntime version="v4.0.30319" />
</startup>
IDE で正常に実行されます...しかし、問題のある他のシナリオがすべて残っています (主に、デプロイされた場所では実行されないということです)...???
アップデート
Charleh への回答として、メイン フォームのコンストラクターの唯一のものは次のとおりです。
InitializeComponent();
foreach (string arg in Environment.GetCommandLineArgs()) {
if (arg == "-DEBUG") {
InDebugMode = true;
break;
}
}
tsch = new ToolStripControlHost(dateTimePickerDuckbilledPlatypus);
toolStripDuckbilledPlatypusMain.Items.Add(tsch);
再度更新
App.configから以下を完全に削除しようとしました:
<startup>
<supportedRuntime version="v4.0.30319" />
</startup>
・・・でも、どうにもなりません。
まだ更新されていません
アクセスする必要があるファイル (.txt ファイル) をコピーすると、正常に実行されたようです (1 回実行されました)。しかし、今では再び開きたくない状態に戻っており、イベント ログ データは次のとおりです。
Source: .NET Runtime
Message: Application: duckbilledPlatypus.exe Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.IO.FileLoadException
Stack: at duckbilledPlatypus.duckbilledPlatypusMainForm.InitializeComponent()
at duckbilledPlatypus.duckbilledPlatypusMainForm..ctor() at duckbilledPlatypus.Program.Main()
複数の人が .exe または .txt にアクセスしている場合、この問題は発生しますか?
最終回の更新、私は計算します
要するに、最初に、.exe に必要ないくつかの .dll とテキスト ファイルをコピーできませんでした。それらがそこにあると、それはうまくいきました。それでも、ファイルを右クリックすると、.NETランタイムのバージョンが見つからない/間違っているという偽のエラーメッセージが表示され、エラーメッセージが非常に誤解を招くものであることは、私には非常に奇妙に思えます。エラー メッセージで、見つからなかった .DLL またはファイルを特定できないのはなぜですか? これにより、デバッグが非常に簡単/高速になります。