C# 除了Type.GetTypeFromProgID之外,还有其他加载COM的方法吗?

C# 除了Type.GetTypeFromProgID之外,还有其他加载COM的方法吗?,c#,dll,com,asp.net-core,.net-core,C#,Dll,Com,Asp.net Core,.net Core,我有一个已注册的旧DLL。我正在将一个网站升级到.NET Core,它必须使用netcoreapp1.0框架 不幸的是,这意味着不再支持Type.GetTypeFromProgID。是否有其他方法可以加载此COM dll并调用其方法 如果我使用net461框架,代码确实可以工作,但不允许我使用它 project.json “框架”:{ “netcoreapp1.0”:{} } 代码: //GetTypeFromProgID does not exist anymore

我有一个已注册的旧DLL。我正在将一个网站升级到.NET Core,它必须使用
netcoreapp1.0
框架

不幸的是,这意味着不再支持
Type.GetTypeFromProgID
。是否有其他方法可以加载此COM dll并调用其方法

如果我使用
net461
框架,代码确实可以工作,但不允许我使用它

project.json

“框架”:{
“netcoreapp1.0”:{}
}
代码:

        //GetTypeFromProgID does not exist anymore
        var comType = Type.GetTypeFromProgID("ABCCrypto2.Crypto");

        var abc = Activator.CreateInstance(comType);

        var license = _config["AbcCrypto:License"];
        var password = _config["AbcCrypto:Password"];

        comType.InvokeMember("License", System.Reflection.BindingFlags.SetProperty, null, abc, new object[] { license });
        comType.InvokeMember("Password", System.Reflection.BindingFlags.SetProperty, null, abc, new object[] { password });

        var hashed = comType.InvokeMember("Encrypt", System.Reflection.BindingFlags.InvokeMethod, null, abc, new object[] { data });

        return hashed.ToString();
我试过这个:

Assembly SampleAssembly;
SampleAssembly = Assembly.LoadFrom(@"C:\Users\john-luke.laue\repositories\MyApp\src\ew\_dlls\ABCCrypto2\" + "ABCCrypto2.dll");
但我有一个错误:

发生未处理的异常:无法加载文件或程序集的file:///C:\Users\john luke.laue\repositories\EspritWeb\src\ew_dlls\ABCCrypto2\ABCCrypto2.dll'或其依赖项之一。模块应包含程序集清单


有什么想法或解决方法吗?

为什么要转到.Net Core?如果你需要使用COM DLL,这意味着你的程序无论如何都不能跨平台运行。我继承了这个应用程序,它是用.NET Core RC2编写的,使用的是dnx@斯维克的东西坏了,所以我不得不升级到RTM和dotnet核心。我需要能够将我的应用程序部署为可移植/依赖于框架的应用程序。(发布后,我需要一个DLL而不是EXE)。如果它使用dnx和COM DLL,那么我认为这意味着它使用了例如
dnx461
,这相当于
net461
。为什么不允许您使用它?我需要将应用程序发布为可移植(依赖于框架)当我使用net461时,它进行自包含部署
net461
不可能是自包含的。应用程序中不能包含.Net Framework。为什么要移动到.Net Core?如果你需要使用COM DLL,这意味着你的程序无论如何都不能跨平台运行。我继承了这个应用程序,它是用.NET Core RC2编写的,使用的是dnx@斯维克的东西坏了,所以我不得不升级到RTM和dotnet核心。我需要能够将我的应用程序部署为可移植/依赖于框架的应用程序。(发布后,我需要一个DLL而不是EXE)。如果它使用dnx和COM DLL,那么我认为这意味着它使用了例如
dnx461
,这相当于
net461
。为什么不允许您使用它?我需要将应用程序发布为可移植(依赖于框架)当我使用net461时,它进行自包含部署
net461
不可能是自包含的。应用程序中不能包含.Net Framework。