【问题标题】:Common Language Runtime detected an invalid program in Visual Studio公共语言运行时在 Visual Studio 中检测到无效程序
【发布时间】:2009-10-30 22:23:01
【问题描述】:

我已经使用 Visual Studio 2008 很长时间了,但最近我在使用 C# 开发应用程序时收到此消息:

公共语言运行时检测到无效程序

当我尝试输入组件的属性(文本屏蔽框属性、工具框属性等)时会发生这种情况。但是,当我尝试启动从 Microsoft 开发人员的 5 星计划下载的其他解决方案时,它确实成为了一个问题,它根本不允许我启动,只是遇到了同样的问题......

我在 google 上寻找答案,但只是得到了一些线索,表明人们在 ASP.NET 等不同情况下也有同样模糊的错误

感谢您对此问题的任何帮助... :( 我不想重新安装 VS,这将是我的最后一个资源...

更新:

我一直没有弄清楚问题出在哪里,所以我安装了一台装有 Windows XP 的虚拟机,那里只有 Visual Studio 和 Netbeans。

【问题讨论】:

  • 检查你的项目参考,这对我有用

标签: .net visual-studio clr


【解决方案1】:

安装 AppDynamics 后我遇到了同样的问题。 解决方案是卸载 AppDynamcis。

我们正在使用 .NET 远程处理,调用的是 Web 服务。 (遗留项目)

【讨论】:

    【解决方案2】:

    我遇到了这个错误。 Peverify 帮助找到了源 - 它是一个方法组调用合成器。去图吧。

    【讨论】:

      【解决方案3】:

      我通过尝试调用 System.Management.Automation.Runspaces.RunspaceFactory.CreateRunspace() 遇到了这个问题 对于这种情况,解决方案是编辑项目文件并确保对相关组件的引用看起来完全正确:

      <Reference Include="System.Management.Automation" />
      

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

      【讨论】:

        【解决方案4】:

        我从未在网上找到解决此问题的方法。但为我解决的问题是使用 Visual Studio 中的“清洁解决方案”选项。

        不知何故,似乎 VS 有点“脏”了。

        【讨论】:

          【解决方案5】:

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

          【讨论】:

          • 我尝试了以下方法:1) 重新安装了 3.5 .Net Framework // 不起作用 2) 重新安装了 Visual Studio 2008 标准版 // 不起作用:( ...仍然有同样丑陋的消息:“公共语言运行时检测到无效程序”问题是没有额外的信息可以给我关于问题的线索...谢谢时间
          • 顺便说一句,我在 Core Quad 中的 Vista 32 位 SP 2 上得到这个...我不知道这是否有帮助
          • 仅供参考:我在使用 Reflector + Reflexil 时得到了同样的信息。就我而言,意思是我以某种方式破坏了 Dll,Visual Studio 不能再使用它了。所以我猜你的一个(或多个)重要的 Dll 被破坏了......
          【解决方案6】:

          只有你必须从

          中删除临时 asp.net 文件
          C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files
          

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

          【讨论】:

            【解决方案7】:

            在阅读 Microsoft 的故障排除指南之前,请尝试使用“清洁解决方案”。

            【讨论】:

            • 你有这个链接吗?
            【解决方案8】:

            可能是使用的引用程序集具有与在 Visual Studio 中打开的解决方案中指定的 CPU 目标不同的 x86 或 x64 CPU 目标。

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

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

            【讨论】:

              【解决方案9】:

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

              在 VB.NET (v4.0 VS-SP1) 中,我发现了一个错误,即编译器不会抛出错误,IntelliSense 也不会:

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

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

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

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

              现在,我再次仔细检查并找到了原因,因为 OriginalImage 对象在有效的代码中被定义为 Bitmap,但是,我将其定义为 Image 在执行的代码中不工作。

              我进一步转到上面的代码行,并检查了上面“克隆”函数采用的参数/参数,来自Bitmap 实例的参数/参数正确且具有 3 个变形(即 3 个不同的参数集您可以使用)调用函数,但是,对于 Image 类型实例,Clone 不带参数!。

              看到这个我很shoekd,问题是我在IntelliSense中没有收到任何错误或警告,也没有编译器错误,代码编译正常,但函数无法执行,我确定这是.NET 中的一个错误(咳咳……一个功能)。

              修复它是将system.drawing.Image 更改为system.drawing.Bitmap,之后代码工作。

              希望对你有帮助

              亲切的问候 海德

              【讨论】:

                【解决方案10】:

                我的一位同事遇到了一个问题,他的工具箱最终损坏了。尝试打开工具箱,右键单击,然后选择“重置工具箱”。你永远不知道。

                【讨论】:

                  【解决方案11】:

                  重新启动我的机器为我解决了这个问题。似乎有很多对这个问题的引用都谈到了方法大小和局部变量数量的限制。这仅适用于 .net framework 2.0 或更低版本。因此,您最好的选择是清理、重建、重新启动或最终重新安装 Visual Studio。根据我的经验,它更像是一个“卡住/损坏”的 Visual Studio。

                  【讨论】:

                    【解决方案12】:

                    这是一个老问题,但我也遇到了这个问题。

                    对我来说,我只是在尝试使用非类型化对象而不是强类型变量。我在我的 ASP.net 项目属性中打开了 option strict 并修复了所有弹出的转换错误,现在它可以正常工作了。

                    在重新安装 VS 或其他人提到的其他更耗时的措施之一之前,您可能想尝试一些事情。

                    【讨论】:

                      【解决方案13】:

                      我通过正确使用 ADDHANDLER 的 HandlerObject 参数中的对象解决了这个完全虚假的(或至少是误导性的)错误消息...我错误地将类名放在那里!

                      【讨论】:

                        【解决方案14】:

                        还有一个可能的原因:在单元测试中实现 Microsoft Fakes 时出现此错误。在添加要为其生成的命名空间之前,我开始手动设置的 .fakes xml 文件之一如下所示:

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

                        没有运行测试,当我使用此 Fakes 设置调试项目中的测试时,我收到 Common language runtime detected an invalid program 消息。我取出了其中一个&lt;Clear/&gt;s,一切都变成了神奇的彩虹和独角兽。

                        【讨论】:

                          【解决方案15】:

                          我最终做的是删除优化和整数溢出检查。删除同一对话框上的跟踪和调试复选框使其对我有用。

                          【讨论】:

                            【解决方案16】:

                            我正在使用 Visual Studio 2012,并且在 vb.net 中有大量项目。 在网格中创建列期间,我的电脑也面临同样的问题。

                            我只是清理我的项目并重新构建它,然后它就可以顺利运行了。

                            谢谢你,

                            【讨论】:

                              猜你喜欢
                              • 2018-02-17
                              • 1970-01-01
                              • 2017-05-05
                              • 2011-05-05
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 2022-01-25
                              相关资源
                              最近更新 更多