问题标签 [invalidprogramexception]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
47 浏览

.net - 使用 vstest.console.exe 在 MSTest 上获取 InvalidProgramException

无效程序异常

尝试从外部程序集中的静态类调用静态方法时,我遇到了这个奇怪的 InvalidProgramException。

我已经尝试将例程放在同一个程序集中,但结果是一样的。

有任何想法吗?

0 投票
0 回答
336 浏览

c# - Visual Studio 2015 中带有填充程序的 InvalidProgramException

不久前已经提出了一个几乎类似的问题,但尚未得到回答。由于我的设置有点不同,我开始了新的尝试:

我演示了我的代码的缩短版本,但即使是这个简短版本也会产生错误。

我有一个返回 a 实例的方法System.Printing.LocalPrintServer

对于这种方法,我使用 shims 实现了一个单元测试:

在 Visual Studio 2013中,此测试运行良好
但是在 Visual Studio 2015 (Update 1)中,当被测方法new LocalPrintServer(...)调用

InvalidProgramException at System.Printing.LocalPrintServer..ctor(String[] propertiesFilter, PrintSystemDesiredAccessdesiredAccess) at DemoProject.PrintServerProvider.Provide() in C:\Projects\DemoProject\Program.cs:Line 10. ...

被提出。(正常的生产调用工作正常。仅在运行测试方法时引发异常)

引用的程序集是:

  • System.Printing (v4.0.30319) 来自 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\System.Printing.dll
  • System.Printing.4.0.0.0.Fakes
  • Microsoft.QualityTools.Testing.Fakes (v2.0.50727) 来自 C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\PublicAssemblies\Microsoft.QualityTools.Testing.Fakes.dll

System.Printing.Fakes

两个项目(生产和测试)都使用 .NET Framework 4.5。

我尝试重置框架以及参考。我尝试了不同版本的引用程序集。我尝试了所有变体的 64 位和 32 位。

在实际代码中,我也使用其他类的垫片。LocalPrintServer是唯一发生异常的类。

任何人都可以解释这是什么原因InvalidProgramException以及如何解决它?

我在这个问题上设置了赏金,可能会通过相同的答案来解决。因此,如果您认为您的答案值得赏金,请随时在此处发布。

0 投票
0 回答
92 浏览

c# - InvalidProgramException:识别错误指令

我动态生成程序集并从这些程序集中调用方法。我同时使用视觉工作室和单声道。有时,我对 ILGenerator.Emit 做错了事,并在尝试调用方法时得到了InvalidProgramException 。

有什么办法可以得到错误的指令?

到目前为止,我必须使用 ILSpy 反汇编程序集并手动通过 IL,当生成的方法很简单时,这是可以的。

不幸的是,有时生成的方法包含数百条 MSIL 指令,并且很难识别错误。

我想知道是否有任何内置的东西可以帮助我。

不幸的是 peverify 不是很有帮助,因为我生成了不安全的代码(带有指针)。因此,我得到了这种错误:

非托管指针不是可验证的类型

此外,其中一些错误仅发生在单声道中,而不发生在 Visual Studio 中。

谢谢

0 投票
1 回答
558 浏览

c# - 发布版本中的无效程序异常 (.NET 4.6.1)

我有一个异步处理套接字通信的程序。我得到的异常只发生在发布版本中(在构建机器上)。导致问题的代码是开始监听传入套接字连接的非常简单的例程:

AcceptAsync 和 ReceiveAsync 是使用 TPL 模式和 Task.Factory.FromAsync 的扩展方法。确切的例外如下:

这似乎发生在:

调用此方法时会立即生成异常。有什么想法可能是错的吗?

0 投票
1 回答
408 浏览

wcf - WCF 公共语言运行时在 Windows XP 上检测到无效程序

我有一个在 .NET 4 上运行的 Windows 窗体应用程序,它与 WCF Web 服务通信。该应用程序被编译为以 X86 作为平台目标运行。该应用程序部署在由数百台计算机组成的网络上,并且只有几台恰好安装了 Windows XP 版本(Microsoft Windows Embedded POSReady 2009,更准确地说是服务包 3)启动错误“通用语言在调用 WCF 代理类对象的构造函数时,运行时检测到无效程序。为了隔离问题,我创建了一个小型控制台应用程序,它唯一要做的就是调用 Web 服务代理类的构造函数,例如:

ItesWebServiceClient m_webService = new ItesWebServiceClient("BasicHttpBinding_IItesWebService");

然后抛出异常:

堆栈跟踪输出

相同的控制台应用程序可在所有其他计算机上运行,​​即使是具有相同 Windows 版本的计算机。

我们已经尝试在出现故障的计算机上修复和重新安装 .Net 框架,但到目前为止还没有修复它。我还使用 PEVerify 工具来验证 MSIL,并按照其他帖子中的建议在调试模式下运行代码(无优化)。

有什么我想念的吗?是否有需要安装的关键 .Net 框架组件或修补程序?

谢谢

0 投票
1 回答
531 浏览

c# - 为什么 localloc 会破坏这种 CIL 方法?

我有以下一段简化的 CIL 代码。
执行此 CIL 方法时, CLR 将抛出InvalidProgramException

我的问题是,为什么这个 CIL 代码无效?

几个观察:
- 如果localloc被删除,代码运行良好。据我所知,localloc用地址替换堆栈上的参数大小,因此堆栈保持平衡,AFAICT。
- 如果 try 和 finally 块被删除,代码运行良好。
- 如果包含的第一个指令块localloc移动到 try-finally 块之后,则代码运行良好。

所以它看起来像是 localloc 和 try-finally 的结合。

一些背景:

由于在运行时进行了一些检测,在为原始方法引发InvalidProgramException之后,我到了这一点。我的调试方法是:

  • 反汇编有问题的 DLLildasm
  • 将检测代码应用于崩溃方法
  • 使用修改后的 IL 重新创建 DLLilasm
  • 再次运行程序,并验证它是否崩溃
  • 逐渐减少崩溃方法的 IL 代码,直到导致问题的最小场景(并尽量不要在此过程中引入错误......)

不幸的是,peverify.exe /IL没有指出任何错误。我试图安慰 ECMA 规范和 Serge Lidin 的 Expert .NET IL 书,但不知道出了什么问题。

我缺少一些基本的东西吗?

编辑:

我稍微更新了有问题的 IL 代码,使其更加完整(无需修改说明)。第二个指令块,包括ldargnewobj等,是从工作代码——原始方法代码中提取的。

对我来说奇怪的是,通过删除locallocor .try- finally,代码可以工作 - 但据我所知,与它们是否存在于代码中相比,这些都不应该改变堆栈的平衡。

这是使用 ILSpy 反编译成 C# 的 IL 代码:

编辑2:

更多观察:
- 获取locallocIL 代码块,并将其移动到函数的末尾,代码运行良好 - 所以看起来代码本身是可以的。
- 将类似的 IL 代码粘贴到 hello world 测试函数中时,该问题不会重现。

我很纳闷...

我希望有一种方法可以从InvalidProgramException获取更多信息。似乎 CLR 没有将确切的失败原因附加到异常对象。我还考虑过使用 CoreCLR 调试版本进行调试,但不幸的是我正在调试的程序与它不兼容......

0 投票
0 回答
66 浏览

c# - 无效程序异常不能被 try catch 块捕获

那里,

一段代码是这样的:

该类 A 在另一个程序集中,但是,在某些环境中,该程序集已损坏,因此我希望我会收到 invalidPrgramExecption。但是,当上面的代码在 w3wp 进程中运行时,即使我想捕获基 Exception 类,它也会崩溃。

你知道 InvalidProgramException 不会被捕获的原因是什么吗?(因为多线程环境?)有什么方法可以优雅地处理这个异常而不会崩溃?

谢谢!

0 投票
0 回答
51 浏览

c# - 创建运行时模拟:使用 Expression.Throw 编译 Expression.Throw 后的 InvalidProgramException

我正在尝试创建一个运行时模拟,它将对每个将被调用的方法都有特定的行为。例如,这个模拟应该总是返回 null - 这已经在工作 - 或者为不可访问的数据库引发异常,或者在这种特定情况下抛出 Argument Exception。我知道,使用模拟框架可以很容易地做到这一点。但由于我必须通过 Spring.NET 使用它,所以据我所知,我不能使用模拟框架。这是因为我必须在 StaticApplicationContext 中指定一个类型。如果有更简单的方法来创建模拟类型,请告诉我。

下面的代码将在 TypeBuilderTest 的 TypeMock.Foo() 处抛出 Expected: But was: (Common Language Runtime detected an invalid program.)。

0 投票
0 回答
143 浏览

xamarin - Xamarin:InitializeComponent() 太复杂

我目前正在使用 Xamarin Forms 开发适用于 IOS 和 Android 的应用程序。我正在使用我的 Android 设备进行调试。

从昨天开始,在尝试构建和测试我的解决方案时,它甚至在加载应用程序之前就进入了中断状态。

例外是:

System.InvalidProgramException:方法 wuut.Discover:InitializeComponent() 太复杂。

当我拔下我的 Android 设备并在开发人员模式下打开应用程序时,它可以工作。但我真的需要控制台等,所以现在我无法继续开发我的应用程序。

我在谷歌上查找了异常,但找不到与我的问题类似的任何东西。

错误发生在我的一个包含 AbsoluteLayout 的 Contentpages 上的 InitializeComponent 内。

AbsoluteLayout 相当大,有 5400 行代码。因此,查看错误消息,我尝试删除我的 XAML 的几块,它又开始工作了。

所以我的问题是:XAML 或 Xamarin 对 AbsoluteLayout/Contentpage 的大小是否有一些限制?如果没有,我将如何解决这个问题?

预先感谢和亲切的问候

0 投票
0 回答
89 浏览

powershell - 从 .Net5 Windows 窗体应用程序运行面向 5.1 或 7.1 的 PowerShell 脚本

我需要在 .Net5 中开发 Windows 窗体(桌面)应用程序。此应用程序应运行特定运行中可能需要的多个不同 PowerShell 脚本。我需要支持 PowerShell 版本 5.1 和/或 7.1。当我尝试在测试应用程序中使用 System.Management.Automation.PowerShell 类时,首先。

在我使用 System.Management.Automation 的简单测试应用程序 .Net5 Windows 窗体应用程序中,我收到以下错误。

在此处输入图像描述

如果我在 .Net Framework 4.7.2 中尝试相同的方法,它会起作用!

如果这是 Windows 窗体应用程序或 .Net 版本或 PowerShell 版本的问题,我会感到困惑。我无法理解问题是什么以及如何使其发挥作用。

此外,如果我应该运行的不同脚本针对不同的 PowerShell 版本(5.1 或 7.1 之一),我如何从同一个应用程序控制它?

任何参考资料或提示或任何帮助都将是有价值的。