我可以在标准 .Net 应用程序中使用 PCL 库吗?
Can I use PCL library in standard .Net application?
我有 PCL 库,我想将它添加到标准 (.net 4.6) C# 控制台应用程序。只要我不在库中使用任何 PCL 特定的 类,一切都很好。如果我这样做,我会得到一个错误 "unsupported PCL profile"。这个错误是不可搜索的。但同一个库在 UWP 应用程序中运行良好。我正在寻找解决方案或官方解释为什么我不能在非 UWP 应用程序中使用 PCL。
当然可以。
只需将 .NET 4.6 添加到所选平台:
它在您创建 PCL 时出现。
更多信息在这里:
Cross-Platform Development with the Portable Class Library
或者您可以更改现有 PCL 中的平台。只需转到属性页面,您将看到:
这是一篇关于如何从桌面应用程序调用 UWP API 的好博客post:
How to call UWP APIs from a desktop VB/C# app
是的,你可以。 PCL 基本上是跨不同平台的可用 API 的交集。缺点是选择的目标平台越多,交集就越小:
PCL 的另一个缺点是它为每个平台生成单独的程序集。
这就是 Microsoft 提供 .NET Standard 的原因 - 替代使用不同方法的 PCL。
将 .NET Standard 视为一个接口,它定义了 API 的集合。然后.NET Framework、.NET Core、Xamarin.iOS、Xamarin.Android等平台将实现.NET Standard。
interface NetStandard1_0 {
}
interface NetStandard1_1 : NetStandard1_0{
}
interface NetStandard1_2 : NetStandard1_1{
}
net46: NetStandard1_6 {
}
dnxcode46: NetStandard1_6 {
}
因此,您不会以特定平台为目标,而是以 .NET Standard 版本为目标。当您的库以 .NET Standard 为目标时,它可以在任何实现 .NET Standards 的平台中使用。另一个优点是您不再需要针对不同平台的单独程序集。将有一个随处运行的程序集。
但是,我建议您等到 2017 年 4 月,届时 .NET Standrard 2.0 应该发布。微软承诺所有平台(.NET Framework、.NET Core、Xamarin.iOS、Xamarin.Android)都将支持该版本的.NET Standard,并将在Visual Studio正式支持。此外,使用 project.json 的 Visual Studio 个项目将转换为 .csproj,因此所有 Visual Studio 个项目将使用相同的格式,这将解决很多兼容性问题。清理去年出现在 .NET 中的烂摊子是绝对必要的
我有 PCL 库,我想将它添加到标准 (.net 4.6) C# 控制台应用程序。只要我不在库中使用任何 PCL 特定的 类,一切都很好。如果我这样做,我会得到一个错误 "unsupported PCL profile"。这个错误是不可搜索的。但同一个库在 UWP 应用程序中运行良好。我正在寻找解决方案或官方解释为什么我不能在非 UWP 应用程序中使用 PCL。
当然可以。 只需将 .NET 4.6 添加到所选平台:
它在您创建 PCL 时出现。
更多信息在这里:
Cross-Platform Development with the Portable Class Library
或者您可以更改现有 PCL 中的平台。只需转到属性页面,您将看到:
这是一篇关于如何从桌面应用程序调用 UWP API 的好博客post:
How to call UWP APIs from a desktop VB/C# app
是的,你可以。 PCL 基本上是跨不同平台的可用 API 的交集。缺点是选择的目标平台越多,交集就越小:
PCL 的另一个缺点是它为每个平台生成单独的程序集。
这就是 Microsoft 提供 .NET Standard 的原因 - 替代使用不同方法的 PCL。
将 .NET Standard 视为一个接口,它定义了 API 的集合。然后.NET Framework、.NET Core、Xamarin.iOS、Xamarin.Android等平台将实现.NET Standard。
interface NetStandard1_0 {
}
interface NetStandard1_1 : NetStandard1_0{
}
interface NetStandard1_2 : NetStandard1_1{
}
net46: NetStandard1_6 {
}
dnxcode46: NetStandard1_6 {
}
因此,您不会以特定平台为目标,而是以 .NET Standard 版本为目标。当您的库以 .NET Standard 为目标时,它可以在任何实现 .NET Standards 的平台中使用。另一个优点是您不再需要针对不同平台的单独程序集。将有一个随处运行的程序集。
但是,我建议您等到 2017 年 4 月,届时 .NET Standrard 2.0 应该发布。微软承诺所有平台(.NET Framework、.NET Core、Xamarin.iOS、Xamarin.Android)都将支持该版本的.NET Standard,并将在Visual Studio正式支持。此外,使用 project.json 的 Visual Studio 个项目将转换为 .csproj,因此所有 Visual Studio 个项目将使用相同的格式,这将解决很多兼容性问题。清理去年出现在 .NET 中的烂摊子是绝对必要的