这是我很长一段时间以来见过的最奇怪的编程问题。
我正在使用 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;
}
}
}
这个应用程序随后从Visual C# 2010 Express
生成为dll
,在其他地方使用一切正常。 当我在上面的 switch 语句中添加另一个 case 时(请参见下文),问题就会出现。
...
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)
复制并粘贴为新的Case,问题仍然存在,因此与Trigger5
-class无关)
这里发生了什么?我查看了Stackoverflow中的其他InvalidProgramException
和Common Language Runtime
,但没有一个似乎与此相关。
我知道这个问题很奇怪,请让我知道,我会提供更多信息。我正在使用64位Windows 8机器,如果有关系的话。我已经检查了VS和.NET更新的任何更新。我也已经几次重新生成了所有dll,并几次从头开始创建了解决方案。