- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我修改了几个不同应用程序的 .config 文件,如下所示:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
当我对 devenv.exe.config 执行此操作(VS 2005 - 不要问:))时,一切都很好 - 大多数 Visual Studio 使用 .NET 2.0,但我能够使用程序集目标。 NET 4.0框架。
我尝试对自定义 .exe 执行相同的操作,该 .exe 恰好基于 MS CAB(稍作修改),并且混合了 WPF 和 WinForms 内容。一旦我修改了该应用程序的应用程序配置文件,我就开始收到此异常,有时在应用程序启动期间:
The Undo operation encountered a context that is different from what was applied in the corresponding Set operation. The possible cause is that a context was Set on the thread and not reverted(undone). System.InvalidOperationException: The Undo operation encountered a context that is different from what was applied in the corresponding Set operation. The possible cause is that a context was Set on the thread and not reverted(undone).
有一个很长的堆栈跟踪,它不会直接显示我的应用程序代码中的任何内容(只是一堆 MS 程序集)。
如果我将应用程序的 .config 文件修改为:
<startup useLegacyV2RuntimeActivationPolicy="true">
</startup>
即我删除了supportedRuntime元素,那么应用程序就不会抛出此异常。但是,当我在代码中尝试加载 .NET 4 程序集时,如果失败并出现以下情况:
System.BadImageFormatException: Could not load file or assembly '' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.
我想这是预料之中的。
我有两个问题:
1) 知道为什么当我修改此应用程序的配置文件以包含supportedRuntime 元素、添加 .NET 4 支持时收到 System.InvalidOperationException 异常吗?以及有关我可以采取哪些措施的任何建议?
2) 如果答案是“不知道为什么/不知道你能做什么”,那么我的 .NET 3.5 SP1 代码 (C#) 可以为有条件添加 .NET 提供更细粒度的支持4 对某个程序集的运行时支持,而不将整个应用程序转换为目标 .NET 4,或者不使用声明性配置文件方法?在某些时候,我会将整个应用程序转换为目标 .NET 4,但从短期来看,这是一项艰巨的任务,我希望能找到一些短期解决方案/技巧。
非常感谢您提供的任何建议!
最佳答案
我不确定您在 VS2005 中看到的具体行为是什么,但不应该是“大多数 Visual Studio 使用 .NET 2.0,但我能够使用针对 .NET 的程序集”的情况4.0框架”。该配置应该导致进程中的所有内容在 v4 上运行。如果情况并非如此,我当然想知道它,因为它可能是一个错误。 (顺便说一句,我相信您已经意识到,通过将 VS2005 向前滚动到 v4,您超出了受支持的方案。)
关于无效操作异常,我的猜测是您遇到了框架之间的某种不兼容问题。我确信我们也希望在这方面发现一个错误。您可以分享异常时的堆栈跟踪吗?
至于采用增量升级方法......确实没有一个好的答案。 CLR 自动支持 COM 组件的进程内 SxS 激活,因此,如果您的应用程序以可以将模块提取为 COM 组件的方式实现,那么您可以利用它。问题是大多数应用程序并不是以这种方式编写的,简单地将所有内容升级到 v4 比重新构建应用程序的工作量要少。
单独的程序集加载发生在触发加载的运行时中。对于正常的程序集加载,没有进程内 SxS 激活。
关于.net - 在应用程序中使用 ‘useLegacyV2RuntimeActivationPolicy’ 和supportedRuntime时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2520104/
假设我有一个使用 VS2008 针对 .NET 2.0 构建和编译的 WinForms 应用程序。 据我了解,在运行时,应用程序将首先尝试加载 .NET 2.0 CLR,(因为它是针对它编译的),不管
首先,我发现了一些关于这个主题的问题,但似乎没有一个能完全解决我的问题,但如果您认为它确实回答了我的问题,请随时指出现有问题。 我的问题:我正在构建依赖于 .NET Framework 3.5 或更高
以下三种场景(在exe的app.config文件中)有什么区别? 我已经阅读了有关它的 MS 文档和一些博客,但我仍然不太清楚究竟发生了什么以及何时使用。 编
我需要将仅包含受支持的运行时设置的 app.config 文件嵌入到我的 exe 文件中。我尝试执行构建操作嵌入式资源,但它现在不从配置文件中读取值并且它不起作用。这是我的配置文件:
我正在编译一个以 .NET 3.5 作为运行时的 C# 应用程序 在我指定的 app.config 中,根据 http://msdn.microsoft.com/en-us/library/w4att
我为 Outlook 2007 创建了一个 VSTO 2.0 SE 加载项。通常,它在最终用户的计算机上安装没有问题,但有时他们在 Outlook.exe 旁边有一个 Outlook.exe.conf
我们有一个支持 .NET 2.0 和 .NET 4.0 的应用程序,我们用 切换了几个依赖于框架的程序集。 .我们使用了 元素以允许应用程序使用最新的框架(如果可用)运行。但是,我们仍然需要完整的配
我有一个 WinForms 应用程序,只需 .exe 文件即可轻松部署。它使用框架 2.0,因此默认情况下它不能在 Windows 8 上运行。如果我包含一个具有以下参数的 .config 文件,它在
我有一个应用程序可以在 .Net 2.0 SP2 上正常运行,但无法在 .NET 2.0 RTM 上正常运行。 (仅供引用:调用托管 DLL 的方法时失败,该 DLL 是用于 USB 编程的 nati
我是一名优秀的程序员,十分优秀!