【问题标题】:Are .NET Core projects referencing PCLs cross-platform?.NET Core 项目是否跨平台引用 PCL?
【发布时间】:2016-12-09 02:10:09
【问题描述】:

我有一个使用 Visual Studio 2017 RC (MSBuild) 创建的 .NET Core (ASP.NET Core) 项目。

我还有一个旧的 F# 项目库(传统的 .NET Framework 库),可以编译为 dll 文件。我想在上述 ASP.NET Core 项目中使用它。

为此,我在 ASP.NET Core 项目中添加了一个项目引用,打开了命名空间,并在我的控制器中进行了一些函数调用;使用 VS 中的 ISS 运行 ASP.NET Core 服务器时,它可以完美运行。

我的问题是,如果我想部署到 linux (Ubuntu),这种安排是否可行?还是使用 .NET Core 中的外部 PCL/dll 会立即使其仅限于 Windows?

请注意,我不必将 .NET Framework 作为目标框架添加到我的 csproj(它是 MSBuild Core)中,它可以正常工作。

【问题讨论】:

    标签: c# .net msbuild asp.net-core .net-core


    【解决方案1】:

    由于您的 F# 项目以 .NET Framework 为目标,因此它不会跨平台运行。如果您修改您的 F# 项目以针对 .NET Standard 库,它会。 Here 是 Immo Landwerth 的视频,解释了 .NET 标准库的工作原理。

    您应该能够仅引用 .NET 标准库而无需更改任何内容。但是,当前版本 1.6 缺少 .NET Framework 中的许多 API。这在 2.0 中已修复。事实上,自从您使用 .NET Core 1.1 以来,我认为您已经在使用 2.0,但我不确定。 Here 是 Immo 的另一个视频,解释了它应该如何工作。

    话虽如此,我不确定 .NET Standard 对 F# 的支持是什么样的。

    【讨论】:

    • 这是所有 DLL 文件的特征吗?也就是说,使用 .NET Standard 生成的 DLL 与使用 PCL 生成的 DLL 有什么区别?
    • 老实说我不确定,我自己对此也很困惑。我想我大部分都理解它,但有些领域我仍然一无所知。我会尝试找到答案,但目前我无法提供可靠的答案。这是 Immo 的一篇深入博客文章,可能会有所帮助。 blogs.msdn.microsoft.com/dotnet/2016/09/26/… 我想你想看看“作为图书馆作者,我现在该怎么办?”部分。 Control-F 并搜索它。
    猜你喜欢
    • 2016-12-30
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 2014-04-19
    • 1970-01-01
    • 2015-11-21
    • 2018-04-03
    相关资源
    最近更新 更多