共享项目选项完全从 Visual Studio 2019 中的 Xamarin.Forms 项目菜单中消失?

Posted

技术标签:

【中文标题】共享项目选项完全从 Visual Studio 2019 中的 Xamarin.Forms 项目菜单中消失?【英文标题】:Shared Project option totally gone from the Xamarin.Forms project menu in Visual Studio 2019? 【发布时间】:2020-02-26 11:31:03 【问题描述】:

我在 Visual Studio 中使用 Xamarin.Forms 已有几年了,最近更新了我的 IDE VS v. 16.3.7)。现在我意识到缺少一些东西:共享项目选项。

当我通过 向导 创建一个新项目时,问题是我想使用 Shared Project 还是 PCL(或 NetStandard)现在不见了(请参见下面 VS 2017 的屏幕截图)

我知道您仍然可以创建一个 共享项目 并手动添加一个 iOS 和一个 Android 项目,但这也太简单了麻烦。我的问题确实是:Microsoft 继续将 PCL/NetStandard 推到 Shared Project 战略之上是否有原因?


我对这个决定感到特别困惑,因为早在 2016 年@miguel.de.icaza 就宣布他最喜欢的选择(在大多数情况下)是共享项目策略:

https://tirania.org/blog/archive/2016/Jan-22.html

对我来说,PCL 对于大多数用途来说太麻烦了。这就像用佳能杀死一只苍蝇。它强加了太多的限制(有限的 API 表面),迫使您跳过箍来完成一些非常基本的任务。

【问题讨论】:

他们现在不实施 netstandard 了吗?所以你可以只使用常规的 netstandard 类库。 【参考方案1】:

我已安装 VS 2017 15.9.14,在此版本中,不推荐使用可移植类库 (PCL)。您可以改用 .NET Standard。在 VS 2019 上,默认为 .NET Standard。

在 Microsoft 文档中,MS 推荐 .NET Standard 2.0 库而不是可移植类库。 有关更多信息,请参阅 MS 文档。 https://docs.microsoft.com/en-us/xamarin/cross-platform/app-fundamentals/code-sharing

我的问题确实是:微软继续将 PCL 推到共享项目战略之上是否有原因?

对于 MS 公告,PCL 已弃用,您在创建项目时找不到。 您可以通过文件 > 新建 > 项目 > 共享项目模板创建共享项目。

有关详细信息,您可以查看下面的链接。 https://docs.microsoft.com/en-us/xamarin/cross-platform/app-fundamentals/shared-projects?tabs=windows

更新:

微软继续将 >NetStandard

对于旧版本的 VS 2017,.Net Standard 是共享项目策略的选项。对于最新版本的 VS,MS 使用 .Net Standard 作为默认的共享策略。 p>

是否有任何文档说明 MS 为何在 Xamarin.Forms 项目向导中现在不推荐使用/不提供共享项目?

PCL 已弃用。共享项目仍在使用中,在我的回答中,我提供了有关如何创建共享项目的第二个链接。

【讨论】:

【参考方案2】:

@WendyZang-MSFT 总结并补充答案:

大约 4 年前,我使用 共享项目 策略开始了一个项目,直到现在 我还没有发现任何特定的问题/问题可以让我考虑迁移到 .Net标准

最近我遇到了本地化的麻烦,即使使用共享项目也可以轻松实现。

如上所述,在我看到最新版本的 Visual Studio 2019 不提供将 Xamarin.Forms 应用程序创建为 Shared 的可能性之后项目 我有点担心我应该迁移我的解决方案。但是时间已经过去了,我才意识到 MS 鼓励使用 .Net 标准,但共享项目仍然是一种有效的方法。

【讨论】:

以上是关于共享项目选项完全从 Visual Studio 2019 中的 Xamarin.Forms 项目菜单中消失?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不同的解决方案之间共享相同的 Visual Studio 项目?不同的 app.config 和 settings.settings

在 Visual Studio 2017 中添加 ATL 简单对象

Visual Studio重建项目在从调试中切换到释放和反之亦然时,选择选项XML文档时

Visual Studio 项目正在引用已删除的共享项目

ASP.NET Core 项目的 Visual Studio 中的“REST API 客户端”选项?

Visual Studio 解决方案:静态项目还是共享项目?