我可以在标准.Net应用程序中使用PCL库吗?

时间:2016-11-25 07:29:58

标签: c# uwp portable-class-library

我有PCL库,我想将它添加到标准(.net 4.6)C#控制台应用程序中。只要我不在库中使用任何PCL特定的类,一切都很好。如果我这样做,我会收到错误“不支持的PCL配置文件”。此错误不可转让。但是同一个库在UWP应用程序中运行良好。我正在寻找解决方案或官方解释为什么我不能在非UWP应用程序中使用PCL。

2 个答案:

答案 0 :(得分:4)

是的,你可以。 PCL基本上是跨不同平台的可用API的交集。缺点是您选择的目标平台越多,交叉点就越小: enter image description here

PCL的另一个缺点是它为每个平台生成单独的程序集。

这就是微软推出.NET Standard的原因 - 它取代了使用不同方法的PCL。

将.NET Standard视为一个定义API集的接口。然后.NET Framework,.NET Core,Xamarin.iOS,Xamarin.Android等平台将实现.NET标准。

interface NetStandard1_0 {
}

interface NetStandard1_1 : NetStandard1_0{
}

interface NetStandard1_2 : NetStandard1_1{
}

net46: NetStandard1_6 {
}

dnxcode46: NetStandard1_6 {
}

因此,您不会针对特定平台,而是针对.NET Standard的版本。当您的库以.NET Standard为目标时,它可以在任何实现.NET标准的平台中使用。另一个优点是您不再需要针对不同平台的单独组件。将会有单个组件在任何地方运行。

但是,我建议您等到2017年4月发布.NET Standrard 2.0时。 Microsoft承诺所有平台(.NET Framework,.NET Core,Xamarin.iOS,Xamarin.Android)都将支持此版本的.NET Standard,并且它将在Visual Studio中提供官方支持。此外,使用project.json的Visual Studio项目将转换为.csproj,因此所有Visual Studio项目将使用相同的格式,它将解决许多兼容性问题。清除.NET去年出现的混乱是绝对必要的

答案 1 :(得分:3)

当然可以。 只需将.NET 4.6添加到选定的平台:

enter image description here

您创建PCL时会出现 更多信息: Cross-Platform Development with the Portable Class Library

或者您可以更改现有PCL中的平台。只需转到属性页面,您将看到:

enter image description here

这是一篇关于如何从桌面应用程序调用UWP API的好文章:
How to call UWP APIs from a desktop VB/C# app