Visual Studio 中的公共语言运行时检测到一个无效的程序。

13

我一直在使用Visual Studio 2008相当长的时间,但最近在用C#开发应用程序时出现了以下提示消息:

Common language runtime detected an invalid program

这通常会发生在我尝试进入组件的属性(文本掩码框的属性、工具箱属性等)时。但当我尝试启动从Microsoft Developer's 5 star计划下载的另一个解决方案时,它根本不允许我启动并遇到了同样的问题......

我在谷歌上搜索答案,但只找到了一些线索,说人们在ASP.NET等不同情况下遇到了相同的模糊错误。

希望能得到任何有关这个问题的帮助... :( 我不想重新安装VS,那将是我最后的资源......

更新:

我从未找到问题所在,因此我安装了一个带有Windows XP虚拟机,在那里我只安装了Visual Studio和Netbeans。


检查你的项目引用,这个方法对我有用。 - user1244018
16个回答

9
我遇到了一个问题,尝试调用System.Management.Automation.Runspaces.RunspaceFactory.CreateRunspace()。对于这种情况,解决方案是编辑项目文件,并确保相关程序集的引用看起来完全一样:
<Reference Include="System.Management.Automation" />

通过VS 2012程序集选择器和将程序集拾取到参考程序集的物理位置,还有其他引用此程序集的方式。


5
我从网上没有找到解决这个问题的方法。但是对我有用的是在Visual Studio中使用“清理解决方案”选项。似乎VS出现了一些问题。

5

您能否在不引用任何额外程序集的情况下在新解决方案中复现问题?如果可以,我认为重新安装是最好的选择。抱歉!


我尝试了以下方法:1)重新安装了3.5 .Net Framework // 没有起作用 2)重新安装了Visual Studio 2008标准版 // 没有起作用:( ...仍然出现相同的错误信息:"Common Language Runtime detected an invalid program",问题是没有额外的信息可以给我关于问题的线索...感谢您的时间。 - Jimmy
顺便说一下,我在Vista 32位SP2的Core Quad上遇到了这个问题...我不知道这是否有帮助。 - Jimmy
顺便提一下:我在使用 Reflector + Reflexil 时也遇到了同样的消息。在我的情况下,意思是我不知怎么把 Dll 搞坏了,Visual Studio 无法再使用它了。所以我猜你们其中一个或多个重要的 Dll 被搞坏了... - itsho

4

您只需要从以下位置删除临时的ASP.NET文件:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files

然后在ASP.NET中运行您的解决方案。现在它将正常运行。


3

我遇到了这个错误。Peverify帮助找到了源头——是一个方法组调用的语法问题。真是让人费解。


1
在按照微软的故障排除指南之前,尝试使用“清理解决方案”。

1
你有这个的链接吗? - Rodney Hickman

1

可能是使用了一个引用程序集,其 CPU 目标为 x86 或 x64,与在 Visual Studio 中打开的解决方案所指定的不同。

如果可以重新编译该程序集,请将其目标设置为与打开的解决方案相同的 CPU 类型,以解决此问题。

我的情况是在 x64 CPU 上运行,我的解决方案的目标是 x86,而一个引用程序集的 CPU 目标为 Any。


1

嗯,(对我来说),经过一个小时的调查,我在我的一侧设法解决了这个问题。

在VB.NET(v4.0 VS-SP1)中,我发现编译器没有抛出错误,IntelliSense也没有抛出错误的bug:

请注意下面,如果我在函数中添加以下行(程序中的任何位置,类/模块/表单/等):

MyGraphics.DrawImage(OriginalImage.Clone(New System.Drawing.Rectangle(ClipX1, ClipY1, ClipW, ClipH), Drawing.Imaging.PixelFormat.Format24bppRgb), 0, 0, TempWidth, TempHeight)

编译器在调试时甚至在进入函数之前就会抛出此错误,它甚至没有到达该行(只是添加到函数中,就使编译器害怕进入此函数)。

我从代码中的另一个函数中复制了这行代码,现有的函数能够正常工作,但新函数不能。这实在令人震惊。

现在,我再次进行了双重检查,并找到了原因,因为在能够工作的代码中, OriginalImage 对象被定义为 Bitmap ,然而,在无法工作的代码中,我将其定义为 Image

我进一步查看了上面的代码行,并检查了“clone”函数所接受的参数/参数,来自Bitmap实例的参数是正确的,并且有3个变形(即您可以使用3组不同的参数调用该函数),然而,对于Image类型的实例,Clone不接受任何参数!。
看到这个问题,我感到非常震惊,问题是在IntelliSense中我没有收到任何错误或警告,也没有编译器错误,代码编译通过,但函数无法执行,我确定这是.NET中的一个错误(咳咳...一个特性)。
修复它的方法是将system.drawing.Image更改为system.drawing.Bitmap,之后代码正常工作。
希望这能帮到你。
顺祝商祺 Heider

1
我在安装了AppDynamics之后遇到了同样的问题。 解决方法是卸载AppDynamics。
我们正在使用.NET remoting来调用我们的Web服务。(旧项目)

0

这可能是另一个导致此问题的原因:在单元测试中实现 Microsoft Fakes 时,我遇到了这个错误。其中一个 .fakes xml 文件在我手动设置命名空间之前看起来像这样:

<StubGeneration>
  <Clear/>
</StubGeneration>
<ShimGeneration>
  <Clear/>
</ShimGeneration>

没有运行任何测试,当我使用这个 Fakes 设置调试项目中的测试时,我收到了“公共语言运行时检测到无效程序”的消息。我去掉了其中一个 <Clear/>,一切都变成了神奇的彩虹和独角兽。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接