适用于 .NET Core 的 Windows 窗体设计器和 WPF 设计器
Posted
技术标签:
【中文标题】适用于 .NET Core 的 Windows 窗体设计器和 WPF 设计器【英文标题】:Windows Forms Designer and WPF Designer for .NET Core 【发布时间】:2019-05-27 07:13:22 【问题描述】:我最近听说 .NET Core (.NET Core 3.0) 的 alpha 版本支持 Windows Forms 和 WPF。但是 Visual Studio Designer(和 Visual Studio)不支持 .NET Core 版本的 Windows 窗体和 WPF。
有什么方法可以让 Visual Studio 设计器(和 Visual Studio)与 .NET Core 3.0 一起使用,或者是否有任何其他设计器或 IDE 可用于与 .NET Core 3 一起使用?
【问题讨论】:
Using the Classic WinForms Designer in WinForms Core Windows Forms Designer Preview 1 Updates to .NET Core Windows Forms designer in Visual Studio 16.5 Preview 1 【参考方案1】:Windows 窗体 - Visual Studio 2019(16.5 预览版 1 - .NET CORE 3.1)
从 Visual Studio 16.5 Preview 1 开始,Visual Studio 中内置了对 Windows 窗体设计器的支持。使用设计器:
您必须使用 Visual Studio 16.5 Preview 1 或更高版本。 您需要在 Visual Studio 中启用设计器。转到工具 → 选项 → 环境 → 预览功能,然后选择使用 .NET Core 应用程序的预览 Windows 窗体设计器选项。更多信息:
Updates to .NET Core Windows Forms designer in Visual Studio 16.5 Preview 1。 WinForms 和 WPF .NET CORE 存储库。请记住,在此版本中,设计器尚不支持许多控件。
旧版本的解决方法
从 Visual Studio 16.5 Preview 1 开始,Visual Studio 中内置了对 Windows 窗体设计器的支持。但对于旧版本,您可以使用以下解决方法:
目前,有一个 workaround 用于将经典 .NET Windows 窗体设计器用于 .NET CORE Windows 窗体项目。
解决方法依赖于使 Classic WinForms 应用程序和 CORE WinForms 应用程序在同一个解决方案中,具有相同的根命名空间。
要添加新的可设计项目,每次要添加新项目时,都需要将其添加到经典项目中,然后将生成的 3 个文件(.cs、.designer.cs、.resx)移动到 CORE 应用程序,然后将它们添加为经典应用的链接。
对于编辑,由于它们在经典应用程序中作为链接提供,因此请在经典应用程序的设计器中对其进行编辑。所有更改都对 CORE 应用可见。
准备解决方案以使用适用于 .NET Core Winforms 应用程序的 Windows 窗体设计器
-
创建一个 Windows 窗体 .NET Core 应用程序。 (See the steps and requirements.)
在 Visual Studio 中打开项目并保存项目,包括解决方案。
右键单击解决方案并添加新项目 → 从模板中,选择 Windows Forms 项目,并将其命名为与 Core app + ".Designer" 相同的名称,然后单击确定。
在 Classic 框架项目的属性中,将默认命名空间设置为与 Core 应用相同的默认命名空间。
擦除两个项目中的所有现有文件并保存更改。
添加表单或用户控件
每次你想添加一个新的表单或用户控件,你需要做以下步骤:
-
在经典框架项目中,添加新项
选择 Windows 窗体或用户控件
在设计器中进行一些更改,例如调整表单大小,以便生成 resx 文件并保存。
在解决方案资源管理器中,右键单击表单并选择剪切。
在核心应用中,粘贴所有项目。(表单、设计器、resx)。
在经典应用中,右键单击并选择添加现有项目。
浏览打开对话框到核心应用文件夹并选择这 3 个添加的文件,然后单击添加按钮附近的下拉菜单并选择 添加为链接
编译解决方案。
使用 Mad Kristensen 的 File Nesting Extension 或通过编辑项目文件重新嵌入经典应用中的文件。
现在,当您需要在核心窗体或用户控件文件之一上使用设计器时,只需使用经典 Windows 窗体设计器打开经典框架项目中的链接文件。
WPF - VS 2019 (16.0.3 .NET CORE 3.0)
WPF .NET Core Designer 的 GA 版本已与 .NET Core 3.0 同时发布,并附带 Visual Studio。
Reference:
WPF 设计器完全独立于 Windows 窗体设计器。我们在 .NET Core 3.0 的同时发布了 WPF .NET Core Designer 的 GA 版本,它带有 Visual Studio。在 Visual Studio 版本 16.3.0 中,我们遇到了启用 XAML 设计器属性默认设置为 false 的问题。这意味着当您单击 .xaml 文件时,设计器不会自动打开。升级到已修复此问题的最新 Visual Studio 版本 16.3.1。修复它的另一个选项是转到工具 -> 选项 -> XAML 设计器并选中启用 XAML 设计器。
【讨论】:
@BravoYeung 当您创建像Form1
这样的表单时,它有一个From1.cs
、Form1.designer.cs
和Form1.resx
。第一个包含构造函数和事件处理程序的代码以及所有自定义代码,第二个(设计器)包含InitializeComponent
方法和控件声明以及其他设计器相关的东西,第三个用于表单的资源。默认情况下,设计器和资源文件嵌套在解决方案资源管理器中的主 cs 文件下。但是在执行上述步骤后,解决方案资源管理器会将它们显示为未嵌套。第 9 步是再次嵌套它们。
它需要更新以包含16.5.2
版本。
@Jimi 我不知道 16.5.2 中的重大变化会改变您在 Windows 窗体中启用设计器的方式。我知道的最新公告是this one。【参考方案2】:
WinForms
项目你可以参考这个视频
How to fix WinForms Designer not support .net core 3.0 visual studio 2019
由于此视频提供了我们需要的更多详细信息,因此我们可以逐步进行。也是基于微软官方github项目dotnet/winforms
dotnet/winforms - Using the Classic WinForms Designer in WinForms Core
我做的相关代码(VS项目)已经推送到github了:
.netCore-WinForms_Designer
对于WPF
项目,您可以使用 XAML 设计器,如下所示:
在 WPF Core App 中使用设计器的解决方法
参考:
dotnet/samples - WPF Hello World sample with linked files
安装 vs 2019 Professional/Enterprise 版
首先,您需要安装 vs 2019 Professional/Enterprise 版本。然后需要安装 .net core 3.0 SDK。现在您可以尝试创建一个 .net core WPF 应用程序,
设置好相关项目名和存储路径后会弹出:
在VS选项中勾选.NET core下的“使用预览SDK”
设置完成后重启vs生效。
使用VS内置模板,创建.net core的名为“CoreHiWPF”的WPF项目
在创建好的解决方案下,使用VS内置模板新建.net框架类型的WPF项目“HiWPF”
现在解决方案的文件结构如下:
更新.net core WPF“CoreHiWPF”的程序集名称,使两个项目的程序集名称相同
右键单击项目CoreHiWPF
,选择Properties
,然后将其Assembly Name
更改为HiWPF
。
然后右键项目,点击“Edit CoreHiWPF.csproj”。
添加代码如下:
<ItemGroup>
<ApplicationDefinition Include="..\HiWPF\App.xaml" Link="App.xaml">
<Generator>MSBuild:Compile</Generator>
</ApplicationDefinition>
<Compile Include="..\HiWPF\App.xaml.cs" Link="App.xaml.cs" />
</ItemGroup>
<ItemGroup>
<Page Include="..\HiWPF\MainWindow.xaml" Link="MainWindow.xaml">
<Generator>MSBuild:Compile</Generator>
</Page>
<Compile Include="..\HiWPF\MainWindow.xaml.cs" Link="MainWindow.xaml.cs" />
</ItemGroup>
确保 .net core WPF 项目 CoreHiWPF 设置为启动项目
如果 .net core WPF 项目CoreHiWPF
已经高亮显示,则可以忽略。或者,您需要选择项目CoreHiWPF
,然后右键单击Set As Start up project
。
试试 XAML 设计器
现在关闭所有打开的文件。单击项目HiWPF
的文件MainWindow.xaml
。然后您现在可以在 XAML 设计器中看到空的 WPF 窗口。
根据需要修改文件 MainWindow.xaml 和相关的 .cs
然后,我在文件MainWindow.xaml
的Grid
中添加两行:
- 一行是Label
,它支持Wrap
- 另一行是Exit
按钮。
然后我将Click
事件添加到Exit
按钮,将Loaded
事件添加到Window
。
更新完代码后,按F5
运行,最终的UI如下:
代码也已经推送到github了:
.netCore-WPF_Designer.
你可以直接克隆看看。
【讨论】:
【参考方案3】:如果您想使用 Visual Studio 2019 预览您的 WPF XAML,只需试用此扩展程序 https://marketplace.visualstudio.com/items?itemName=GiessweinApps.FAMLDesigner。
它支持 .NET Core 和 .NET Framework:
【讨论】:
【参考方案4】:我删除了项目文件并重新创建了项目以使其适合我。新建 -> 来自现有代码的项目...
【讨论】:
对我来说也一样。设计师第一次后停止工作,我无法再次加载它。所以我只是将Form.cs
和Form.Designer.cs
复制到了一个新位置,删除了应用程序,创建了一个新应用程序并使用了复制文件中的现有代码【参考方案5】:
虽然官方 WPF GitHub Repository 表示:
注意:WPF 视觉设计器尚不可用,它将成为 Visual Studio 2019 更新的一部分。
有这个example video 正在使用视觉设计器。
希望对你有帮助!
【讨论】:
链接的视频只是使用 Visual Studio,而不是使用 Visual Form Designer 处理 xaml 文件。【参考方案6】:Microsoft Visual Studio 专业版 2019 版本 16.7.2 开箱即用。
【讨论】:
【参考方案7】:刚刚发现用 WinForms 设计器打开文件的指令出现在 文件 .csproj.user。
<ItemGroup>
<Compile Update="Form1.cs">
<SubType>Form</SubType>
</Compile>
</ItemGroup>
所以,如果你和我一样,已经 .gitignored 这个文件并且已经完成了 git clean,你就不能再用 Designer 打开这个文件了。
【讨论】:
【参考方案8】:如果缺少表单设计器。尝试将另一个 Windows 窗体添加到您的项目中。一旦我这样做了,我的另一个 Windows 窗体的设计器就会出现。
如果您使用的是 Visual Studio 2019,请确保获取包含 Windows 窗体设计器的最新更新。一些早期版本不包含它。
【讨论】:
以上是关于适用于 .NET Core 的 Windows 窗体设计器和 WPF 设计器的主要内容,如果未能解决你的问题,请参考以下文章
FluentEmail - 适用于 .NET 和 .NET Core 的邮件发送库