C# .NET Framework版本和COM对象
我们有一个MFC应用程序EXE,它承载COM对象,COM对象是应用程序的主要部分,因此我们可以动态地构建更多功能。最近,使用C#创建了新代码,并使COM可见,支持相同的接口。这些通常都是针对V2.X.Net运行时构建的。我们现在希望能够部署在可能只有V4.X.Net运行时的客户机上,但我们希望保持与V2.X代码的兼容性。如果主应用程序是.Net应用程序,那么我们可以在配置文件中使用。这不适用于非.Net主机应用程序C# .NET Framework版本和COM对象,c#,.net,com,C#,.net,Com,我们有一个MFC应用程序EXE,它承载COM对象,COM对象是应用程序的主要部分,因此我们可以动态地构建更多功能。最近,使用C#创建了新代码,并使COM可见,支持相同的接口。这些通常都是针对V2.X.Net运行时构建的。我们现在希望能够部署在可能只有V4.X.Net运行时的客户机上,但我们希望保持与V2.X代码的兼容性。如果主应用程序是.Net应用程序,那么我们可以在配置文件中使用。这不适用于非.Net主机应用程序 有人知道是否可以对.Net COM组件执行相同的操作,即指定它们可以在v4.X上
有人知道是否可以对.Net COM组件执行相同的操作,即指定它们可以在v4.X上运行的位置,而无需重新构建和重新定位它们吗?什么是v4.X运行时?最新的框架版本是3.5,不包含对运行时的更改。它的运行时与2.0相同,并带有一些附加库。我找到了答案,您需要在app.exe.config文件中添加更多内容,请参见下文
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<requiredRuntime safemode="true" imageVersion="v4.0.21006" version="v4.0.21006"/>
<supportedRuntime version="v4.0" sku="client" />
</startup>
</configuration>
然后,这允许非托管主机exe文件启动非针对目标v4运行时构建的托管组件。您好,感谢您的响应,我们正在使用.Net Framework 4 Beta 2(客户端配置文件),它附带了一个新的运行时V4.0,可能我错了,但我知道.NET 4不会更改CLR运行时,而是会提供添加的DLR开关以支持动态语言。AZ-.NET framework 4.0实际上是一个新的运行时(除了您提到的DLR功能之外)。有关更多信息,请参阅(我在Bing上找到的第一个具有良好信息的链接)。还有一个链接指向一个不错的PDC2008演示文稿。