C# .NET2.0DLL(COM interp),由C++;在.net 4.0环境中,错误为;“类未注册”; 我在.NET 2(VS2008)中有一个旧版本的C·ydll WROTEN,它将一些接口导出到另一个C++应用程序(64位)。在满足windows server 2012之前,它工作正常

C# .NET2.0DLL(COM interp),由C++;在.net 4.0环境中,错误为;“类未注册”; 我在.NET 2(VS2008)中有一个旧版本的C·ydll WROTEN,它将一些接口导出到另一个C++应用程序(64位)。在满足windows server 2012之前,它工作正常,c#,c++,.net,dll,C#,C++,.net,Dll,在windows server 2008中,安装程序使用Regasm(2.0.50727版本)/codebase注册DLL。由于默认情况下安装了.NET3.5,因此一切正常 在windows server 2012中,安装程序使用Regasm(4.0.30319版本)/codebase注册DLL。无错误和警告,完全注册成功 从C++应用程序调用接口(64位)时,错误为0x800 40154(类未登记)。 也可以使用新的VS2010和Toalto .NET 4编译DLL代码,登记它,运行C++应用

在windows server 2008中,安装程序使用Regasm(2.0.50727版本)/codebase注册DLL。由于默认情况下安装了.NET3.5,因此一切正常

在windows server 2012中,安装程序使用Regasm(4.0.30319版本)/codebase注册DLL。无错误和警告,完全注册成功

从C++应用程序调用接口(64位)时,错误为0x800 40154(类未登记)。 <>也可以使用新的VS2010和Toalto .NET 4编译DLL代码,登记它,运行C++应用程序(64位),一切都很好。 我尝试了Supportedruntime、sku=xxx、useLegacyV2RuntimeActivationPolicy等,没有人工作。有没有一个简单的方法来处理这个问题?配置文件还是什么

我不想有两个DLL文件,一个用于.net 3.5,另一个用于.net 4.0+。或者让用户始终安装.NET3.5和.NET4.0

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    <supportedRuntime version="v2.0.50727"/>
  </startup>
</configuration>


您是否使用frameworkx64文件夹中的regasm?是的,64位框架文件夹,我很确定,我是手动完成的。是否可以使用配置文件解决此问题?不确定。如果你在win2012上向Regasm(2.0.50727版本)注册net2.0 dll会发生什么?默认情况下,win2012上不存在Regasm(2.0.50727版本),如果安装.net framework 3.5,那么包括Regasm在内,一切都可以正常工作。