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

时间:2016-09-29 00:17:01

标签: c# dll com asp.net-core .net-core

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

不幸的是,这意味着不再支持Type.GetTypeFromProgID。有没有其他方法可以加载这个COM DLL并调用它的方法?

如果我使用net461框架,代码确实有效,但我不允许使用它。

project.json

"frameworks": {
  "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'或其中一个依赖。该模块应该包含一个程序集清单。

任何想法或解决方法?

0 个答案:

没有答案