.NETCore和.NET4.5.2都使用的公共类库
我对.Net Core相当陌生,但已经创建了一个可运行的Asp.Net Core WebAPI站点-现在我想与另一个项目共享一些代码.NETCore和.NET4.5.2都使用的公共类库,.net,portable-class-library,.net-core,.net,Portable Class Library,.net Core,我对.Net Core相当陌生,但已经创建了一个可运行的Asp.Net Core WebAPI站点-现在我想与另一个项目共享一些代码 我安装了Visual Studio 2015和更新3 我已从安装了DotNetCore.1.0.0-VS2015Tools.Preview2.exe 我想创建一个可以被其他两个库使用的共享库(PCL)——它只包含基本类/接口,没有其他依赖项。其中一个消费库是一个新的香草项目,目标是“netstandard1.6”,另一个是一个旧的客户端库,目标是.NET4.5
- 我安装了Visual Studio 2015和更新3
- 我已从安装了DotNetCore.1.0.0-VS2015Tools.Preview2.exe
{
"supports": {},
"dependencies": {
"Microsoft.NETCore.Portable.Compatibility": "1.0.1",
"NETStandard.Library": "1.6.0"
},
"frameworks": {
"netstandard1.1": {}
}
}
My consuming library project.json是:
{
"version": "1.0.0-*",
"dependencies": {
"NETStandard.Library": "1.6.0",
"Newtonsoft.Json": "9.0.1"
},
"frameworks": {
"netstandard1.6": {
"dependencies": {
"ClassLibrary1": {
"target": "project"
}
}
}
}
}
我怎样才能做到这一点
2016年7月7日编辑:
我提供了以下解决方案,演示了我的设置:
请参阅ExperimentClient::GetLocationAsync,了解我希望在.Net 4.5.2/4.6.x客户端中使用合同库的位置。以下是我创建共享库的方法,这些共享库可以从.Net核心项目和.Net 4.5项目中使用: SharedLibrary\project.json
"dependencies": { },
"frameworks": {
"net45": { },
"netstandard1.1": {
"dependencies": {
"NETStandard.Library": "1.6.0"
}
}
},
"version": "1.0.0"
同一解决方案中的消费(.NET Core)库引用它的方式如下:
"dependencies": {
"SharedLibrary": {
"target": "project",
"version": "1.0.0"
}
},
"frameworks": {
"netstandard1.1": { }
}
}
一个使用project.json
的.NET4.5项目除了框架部分中的net45
之外看起来是一样的。如果生成了用于SharedLibrary的NuGet包,那么在基于csproj的.NET4.5项目中安装也会起作用
根据netstandard1.1的定义,只需将共享库定位在.NET4.5+项目中就可以了。我在这方面遇到了一些奇怪的问题,但这可能是beta工具的结果。我找到的唯一可行的方法是破解客户端库的.csproj文件:
假的
..\JE.Api.experience.Contract\bin\$(配置)\net452\JE.Api.experience.Contract.dll
通过硬编码从合同库到正确输出文件夹的路径,一切正常
。。。认为这可能是visual studio中的一个bug。仅供参考-随着.NET Core的出现,它们不再被称为PCL:)谢谢我的“netstandard端”现在正在运行,但在从.NET4.5.2客户端引用共享项目时仍然存在问题。{“dependencies”:{},“frameworks”:{“net452”:{},“version”:“1.0.0”}我在VisualStudio中引用了该项目(两个库在同一个解决方案中),我得到了“error CS0234”。但是,共享库生成了一个.Net 4.5.2 dll。奇怪的是,如果我直接引用它,一切都正常。当引用项目而不是DLL时,属性窗口中的hintpath是正确的:\ClientLib\bin\Debug\net452\SharedLib.DLL都非常奇怪。。。M$怎么会把这些东西弄得这么复杂。Net过去很简单:-(@JonRea:澄清一下-您是从基于
project.json
还是基于csproj
的.Net 4.5.2项目引用共享项目?“您是从.Net 4.5.2项目引用共享项目”-是…“基于project.json还是基于csproj”--这取决于我选择的VS模板。我尝试了xproj和csproj,它们都有一个project.json。我编辑了这个问题,添加了一个示例解决方案。