我有一个已注册的旧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'或其中一个依赖。该模块应该包含一个程序集清单。
任何想法或解决方法?