[解決済み] InvalidProgramException / 共通言語ランタイムが無効なプログラムを検出しました。
質問
これは、私が長い間見てきた中で最も奇妙なプログラミングの問題です。
を使っています。
Microsoft Visual C# 2010 Express
,
C#
と
.NET 2.0
を使用して、アプリケーションを開発します。このアプリケーションは、いくつかの
dll
/アセンブリ(これらのDLLはすべて私のマシンで生成されます)。
以下はコードの一部です(基本的なものばかりです)。
public class PowerManagement
{
[TestCase]
public void PrepareTest(){
// Configure according to pre-conditions
Preconditions precondition = new Preconditions();
precondition.SetupPreconditions();
...
}
[TestCase]
public void PerformTest(){
TestcaseData testcaseData = new TestcaseData();
// Set Trigger and perform check
switch (testcaseData.triggerNumber){
case (1):
if ((new Trigger1(testcaseData)).Validate() != 1)
Report.TestStepFail("failed");
break;
...
case (4):
if ((new Trigger4(testcaseData)).Validate() != 1)
Report.TestStepFail("failed");
break;
default:
Report.TestStepFail("Not yet implemented");
break;
}
}
}
このアプリケーションを
dll
から
Visual C# 2010 Express
を他の場所で使用しても、すべて問題ありません。問題は、上記のswitch-statementに別のケースを追加したときに表面化します(以下参照)。
...
case (4):
if ((new Trigger4(testcaseData)).Validate() != 1)
Report.TestStepFail("failed");
break;
case (5):
if ((new Trigger5(testcaseData)).Validate() != 1)
Report.TestStepFail("failed");
break;
default:
Report.TestStepFail("Not yet implemented");
break;
それでも一度も問題なくビルドでき、dllも生成できるのですが、生成されたdllを使用すると、以下のエラーが発生します。
A .NET exception (InvalidProgramException) occured in the module PowerManagement
Error message: Common Language Runtime detected an invalid program.
Throwing method: PowerManagement.PerformTest
(をコピーしても問題は発生しません。
case(4)
とは関係なく、新しいケースとして貼り付けます。
Trigger5
-クラス)
ここで何が起こっているのでしょうか?私は他の
InvalidProgramException
と
Common Language Runtime
をStackoverflowで見てみましたが、どれも関係なさそうでした。
この問題が奇妙なのは知っている ということで、詳しい情報を提供しますので、教えてください。私は64ビットのWindows 8マシンを使用しています。VSと.NETのアップデートはすでにチェック済みです。また、すべてのDLLを数回再生成し、ソリューションを数回ゼロから作成しました。
解決するには?
やっとこの問題を解決することができました。
私は
code optimization
をC# Expressで実行すると、問題が解決しました。しかし、古いツールやフレームワークを使用しているため、誰かのせいにすることはできません。
関連
-
[解決済み】スクリプトクラスが見つからないので、スクリプトコンポーネントを追加できない?
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み】ランダムなブーリアンを生成する最速の方法
-
[解決済み】2年前のMSDateを把握する【クローズド
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み] [Solved] .NETでスレッドの終了を待つには?
-
[解決済み] Visual Studioのコンパイルエラー "mismatch between processor architecture "を修正するにはどうしたらいいですか?
-
[解決済み】共有オブジェクト(.so)、静的ライブラリ(.a)、DLL(.so)の違い?)
-
[解決済み】Entity Frameworkと接続プーリング
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み】コンパイルエラー「未割り当てのローカル変数を使用しています」が発生したのはなぜですか?
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C# [解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C#.
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
[解決済み】OnCollisionEnter2Dが実行されない?
-
[解決済み】ランダムなブーリアンを生成する最速の方法
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
[解決済み】URLから画像をダウンロードする方法
-
[解決済み】「namespace」なのに「type」のように使われる。