适用于 .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.csForm1.designer.csForm1.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.xamlGrid 中添加两行: - 一行是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.csForm.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 设计器的主要内容,如果未能解决你的问题,请参考以下文章

适用于 ASP.NET 开发者的 ASP.NET Core

FluentEmail - 适用于 .NET 和 .NET Core 的邮件发送库

在 .NET Core 3.1 中使用 ImageSource?

框架-.NET:.NET Core

json 适用于.NET Core的xUnit测试项目

powershell 适用于PS Core的Windows PowerShell模块