Class Library (Package)
项目project.json
更改为这样(添加了项目依赖项):project.json
{
"version": "1.0.0-*",
"description": "WMI.ECM.PCMS.Services.Acomba Class Library",
"authors": [ "WILL" ],
"tags": [ "" ],
"projectUrl": "",
"licenseUrl": "",
"dependencies": {
"Acomba.SDK": "2.0.0",
"WMI.ECM.Inventory.Models": "",
"WMI.ECM.Inventory.Services": "",
"WMI.ECM.Inventory.Services.Contracts": ""
},
"frameworks": {
"dnx451": { },
"dnxcore50": {
"dependencies": {
"Microsoft.CSharp": "4.0.1-beta-23516",
"System.Collections": "4.0.11-beta-23516",
"System.Linq": "4.0.1-beta-23516",
"System.Runtime": "4.0.21-beta-23516",
"System.Threading": "4.0.11-beta-23516"
}
}
}
}
“DateTime”类型在未引用的程序集中定义。您必须添加对程序集'mscorlib,Version = 4.0.0.0,Culture = neutral,PunlicKeyToken = b77a5c561934e089'的引用。
mscorlib.dll
实际上已在相关项目中引用Referenced assemblies
。结果,我做了一些最终无能为力的搜索。
我试图在我的project.json中添加依赖项到dnx451 {},如下所示:
"dnx451": {
"dependencies": {
"Microsoft.CSharp": "",
"System.Runtime": ""
...
}
}
因为我记得在某个地方读过这样的解决方案,但它没有用。
大多数答案适用于较旧版本的网络项目,可通过在web.config
中添加引用来解决此问题。好吧,Class Library (Package)
没有web.config
。
我还下载并安装了这个补丁:
Microsoft .NET Framework 4.5.2 Developer Pack
,没有任何改变。
还有一个我几乎无法理解所讨论的内容,因为他们正在谈论框架的每个版本或类似的东西的外观。
虽然我找不到任何有用的解决方案来解决实际问题,但这似乎是一个常见的问题。
目前正在使用
更新
它似乎是由我从VS CMD行使用此工具导入的COM库引起的:Tlbimp.exe (Type Library Importer)
。
简而言之,AcoSDK.dll是一个COM库,我使用上述工具导入它来创建一个.NET程序集,所有的COM类型都解析为.NET类型。
然后,我使用NuGet.exe
创建了一个我通过私人Feed发布的包。
然后,我在"Acomba.SDK": "2.0.0"
project.json
中将我的项目中的包引用为public DateTime CreatedAt { get { return p.PrTimeModified; } }
。
每当我使用此包中的DateTime属性时,都会发生生成错误。例如,这会导致错误发生:
public DateTime CreatedAt { get { return new DateTime(); } }
这不是:
tlbimp.exe
.NET DateTime的COM类型是Date。但是,它应该被视为遵循createTunnelDropdown: function (element, data){
var tpl = _.template('<option value="<%= id %>"><%= name %></option>');
var sorted = _.sortBy(data, 'title');
_.each(sorted, function(obj) {
element.append(tpl({"id": obj.id, "name": obj.title}));
});
},
命令行中提供的示例中的步骤的DateTime。
只有当我在属性中添加一个点时,才会看到DNXCORE50中不支持DateTime。除了它是原生DateTime,例如'new DateTime()'(see screenshot here
)。
有关如何解决此问题的任何线索?
答案 0 :(得分:1)
根据GitHub上报告的这个问题: Accessing mscorelib in DNX Core 5.0 #989
,似乎Core CLR并不能很好地支持引用mscorlib.dll的COM类型。
此外,还有一个可用于解决此问题的软件包,它是:
Microsoft.NETCore.Portable.Compatibility
简而言之,它所做的只是将引用mscorlib.dll的类型(如COM对象)重新映射到较新版本的System.Runtime和其他库,而这些库又引用了相应的DLL以获得正确的版本。
所以解决方法是在project.json中添加这个包,如下所示:
<强> project.json 强>
"frameworks": {
"dnx451": { },
"dnxcore50": {
"dependencies": {
"Microsoft.CSharp": "4.0.1-beta-23516",
"Microsoft.NETCore.Portable.Compatibility": "1.0.1-beta-23516",
"System.Collections": "4.0.11-beta-23516",
"System.Linq": "4.0.1-beta-23516",
"System.Runtime": "4.0.21-beta-23516",
"System.Threading" : "4.0.11-beta-23516"
}
}
}
有关此软件包的更多详细信息,以及有关该问题的更多信息,我强烈建议您按照提供的链接进行操作,因为它们涵盖了更深入的信息。
最后,它解决了这个问题! =)