- 创建了一个新的
类库(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' 添加引用。
- 然而,我的其他目标为 DNX451 和 DNXCORE50 的项目没有这个问题。此外,我应该提到,这个项目中实际上已经引用了
mscorlib.dll
,如此截图所示:Referenced assemblies
。
因此,我进行了一些搜索,但最终毫无头绪。
我尝试在我的 project.json 中向 dnx451{} 添加依赖项,如下所示:
"dnx451": {
"dependencies": {
"Microsoft.CSharp": "",
"System.Runtime": ""
...
}
}
因为我记得在某个地方读到过这样的解决方案,但它并没有起作用。
大多数答案都是针对旧版本的Web项目,通过在
web.config
中添加引用来解决问题。不过,Class Library(Package)
没有web.config
。我还下载并安装了此补丁:
Microsoft .NET Framework 4.5.2 Developer Pack
,但没有改变任何东西。还有另一个,我几乎无法理解他们在讨论什么,因为他们正在谈论每个框架版本的外观或类似的东西。
- Visual Studio Community 2015 - 版本14.0.25123.00 更新2
- .NET Framework 4.6.01055
- 已安装ASP.NET MVC 6
- SideWaffle用于Xunit DNX单元测试项目模板
- Visual C# 2015
Tlbimp.exe (类型库导入工具)
。简而言之,AcoSDK.dll是一个COM库,我使用上述工具导入它来创建一个.NET程序集,其中所有COM类型都被解析为.NET类型。
然后,我使用
NuGet.exe
创建了一个包,并将其发布到我的私人Feed。
然后,在我的 project.json
文件中引用了包,如下所示:"Acomba.SDK": "2.0.0"
。
每当我使用该包中的 DateTime 属性时,就会出现构建错误。例如,以下情况会导致错误发生:
public DateTime CreatedAt { get { return p.PrTimeModified; } }
而这个不会:
public DateTime CreatedAt { get { return new DateTime(); } }
.NET DateTime的COM类型是Date。但是,根据
tlbimp.exe
命令行提供的示例步骤,应该将其视为DateTime。只有当我在属性后面添加了一个点时,我才发现DateTime在DNXCORE50中不受支持。但对于原生DateTime,如'new DateTime()'(
请看这里的截图
),则是支持的。有什么方法可以解决这个问题吗?