CoreCLR,'类型'不包含'GetTypeFromProgID'的定义
我试图从dnx451将Web应用程序升级到dotnetcoreapp1.0。CoreCLR,'类型'不包含'GetTypeFromProgID'的定义
此应用程序需要使用旧的库(至少我认为它是一个库)。这段代码曾经与DNX一起工作,但现在并没有升级。
//COMPILE ERROR: 'Type' does not contain a definition for 'GetTypeFromProgID'
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 });
任何想法或解决方法?谢谢!
编辑:
上面的代码是一个类库从引用它的ASP.NET核心Web应用程序中分离出来。下面是类库project.json:
"buildOptions": {
"emitEntryPoint": false
},
"dependencies": {
"MyApp.Data": "1.0.0-*",
"System.Net.Mail": "1.0.0-rtm-00002",
"System.Runtime": "4.1.0"
},
"frameworks": {
"netcoreapp1.0": { }
}
,这里是为ASP.NET核心Web应用程序的project.json:
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true
},
"dependencies": {
"MyApp.Services": "1.0.0-*",
"Microsoft.AspNetCore.Authentication.Cookies": "1.0.0",
"Microsoft.AspNetCore.Authorization": "1.0.0",
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Hosting": "1.0.0",
"Microsoft.AspNetCore.Hosting.Abstractions": "1.0.0",
"Microsoft.AspNetCore.Http.Extensions": "1.0.0",
"Microsoft.AspNetCore.Localization": "1.0.0",
"Microsoft.AspNetCore.Mvc": "1.0.0",
"Microsoft.AspNetCore.Routing": "1.0.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
"Microsoft.AspNetCore.Session": "1.0.0",
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
"Microsoft.Extensions.Caching.SqlServer": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0"
},
"frameworks": {
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
}
}
}
},
"runtimes": {
"win10-x86": {}
}
Type.GetTypeFromProgID
存在,如果你将添加到"System.Runtime": "4.1.0"
依赖部分在你的project.json文件中。
如果你想检查一些API是否存在并使用apisof.net。
无论如何,汉斯写道,也许你不应该针对核心网所有..
我添加了“System.Runtime”:“4.1.0”,但它没有修复错误。 (还是)感谢你的建议。 –
@johnluke你可以告诉我project.json文件吗?恢复命令成功了吗?我刚刚尝试了新的coreapp项目,它的工作。 –
我添加了project.json文件。 dotnet还原适用于类库和核心Web应用程序。不过,我仍然得到相同的原始错误。 –
我改变了我的框架net461和它的工作。我仍然可以使用AspNetCore包:
"frameworks": {
"net461": {}
}
不过,我现在已经涉及到加载COM库中的问题,但我认为这是一个单独的错误,所以我会发布一个新的问题。
您要求更多“核心”。没有人喜欢在手机上运行注册表清洁工。或Linux。使用.NETCore完全没有任何意义,因为当你依赖一个只能在Windows上安装的组件时,才会有意义。只要将.NET的完整版本作为目标,它总是可以在这样的机器上使用。 –
@HansPassant我改变了我的框架到net461,这似乎解决了这个错误。谢谢你的帮助。 –