templates - VS2019 + Xamarin.Forms = UWP/EXE 掉线了?
问题描述
如何让 UWP 回到 Xamarin.Forms 跨平台创建中以准备好模板?
在浏览了发行说明、使用 VS2019 的 UI 和几个小时的网络搜索之后,我只发现其他人在预览版中发布了有关该问题的帖子。有人说 UWP 永远消失了,有人说它只是默认不包括在内(因此微软可以吹嘘安装如何从 23GB 变为 8GB 或类似的东西) - 但没有帮助如何重新启用它,或添加将其添加到项目创建向导中(除了添加一个空白的 UWP 项目,没有 iOS/Android 项目中的所有代码)。
<Project Sdk="Microsoft.NET.Sdk">
// the code is not the problem here,
// getting TO the code is the problem
</Project>
预期:在 VS2017 中,Xamarin.Forms 跨平台默认提供 iOS + Android + UWP 模板。
实际:Visual Studio 2019 似乎已从 Xamarin.Forms 跨平台项目创建中删除了 UWP 模板。
解决方案
4 月 9 日更新:发布了 2019 年的新版本,再次恢复了 UWP 模板
UWP模板从VS2019中删除是正确的,我不知道它背后的原因,但我们必须处理它。但是,有一个页面可以让您逐步完成该过程。在 Visual Studio for Mac 中创建的项目已经存在了一段时间,这些项目也不包括 UWP 模板。完整的描述可以在这里找到:https ://docs.microsoft.com/en-us/xamarin/xamarin-forms/platform/windows/installation/取自此页面:
首先,右键单击解决方案并选择Add > New Project...并添加一个Blank App (Universal Windows)项目:
然后,选择最低和目标 UWP 版本。
右键单击 UWP 项目并选择Manage NuGet Packages...并添加Xamarin.Forms包。确保解决方案中的其他项目也更新到相同版本的 Xamarin.Forms 包。
此外,确保将在Build > Configuration Manager 窗口中构建新的 UWP 项目(默认情况下这可能不会发生)。勾选通用项目的构建和部署框:
右键单击 UWP 项目并选择添加 > 引用并创建对 Xamarin.Forms 应用程序项目(.NET Standard 或共享项目)的引用。
在 UWP 项目中,编辑以在第 52 行附近App.xaml.cs
的方法中包含Init
方法调用:OnLaunched
// under this line
rootFrame.NavigationFailed += OnNavigationFailed;
// add this line
Xamarin.Forms.Forms.Init (e); // requires the `e` parameter
在 UWP 项目中,MainPage.xaml
通过删除Grid
包含在Page
元素中的元素进行编辑。然后在 中MainPage.xaml
,为 添加一个新的 xmlns 条目Xamarin.Forms.Platform.UWP
,如下所示:xmlns:forms="using:Xamarin.Forms.Platform.UWP"
。
在MainPage.xaml
中,更改 root <Page element to <forms:WindowsPage
,如下所示:
<forms:WindowsPage
...
xmlns:forms="using:Xamarin.Forms.Platform.UWP"
...
</forms:WindowsPage>
在 UWP 项目中,编辑MainPage.xaml.cs
以删除:类名的继承说明符(因为由于上一步中所做的更改,Page
它现在将继承自)WindowsPage
public sealed partial class MainPage // REMOVE ": Page"
在构造函数中MainPage.xaml.cs
添加LoadApplication
调用MainPage
以启动 Xamarin.Forms 应用:
// below this existing line
this.InitializeComponent();
// add this line
LoadApplication(new YOUR_NAMESPACE.App());
从所需的现有平台项目中添加任何本地资源(例如图像文件)。
现在它应该像以前一样工作。我知道,对于以前刚刚工作的东西来说,经历它是一件麻烦事。对此感到抱歉,但这也应该让你到达那里。
推荐阅读
- javascript - 如何从数组中提取单个信息
- angular - 如何保持我的日期值正确以提交给 API?
- javascript - 我如何在 Python 3 上执行此 javascript 代码?
- python - 在我的有效前沿没有得到子弹形状
- mysql - Wordpress 和 mysql pod 推出正确,但 wordpress 未显示在我的浏览器上
- javascript - 如何使用 JQuery Dropzone 将额外参数传递给我的 java 控制器方法
- bash - 难倒:这个脚本没有按预期工作?
- python - 为什么我的矩形不起作用并使玩家与门交互,因为它应该在 pygame
- javascript - 如何更改范围输入滑块拇指值的边框半径?
- php - wordpress(elementor)如何将内容从一个页面插入另一个页面