.NET Core的Windows Forms设计器和WPF设计器

6

我最近听说.NET Core(.NET Core 3.0)的alpha版本支持Windows Forms和WPF。但是Visual Studio设计师(和Visual Studio) 不支持 .NET Core版本 的Windows Forms和WPF。

有没有办法让Visual Studio设计师(和Visual Studio)与.NET Core 3.0配合使用或者有没有其他的设计师或IDE可以用来与.NET Core 3一起使用?


在WinForms Core中使用经典的WinForms设计器 - Reza Aghaei
.NET Core Windows Forms 设计器在 Visual Studio 16.5 预览版 1 中的更新 - Reza Aghaei
8个回答

12

Windows Forms - Visual Studio 2019 (16.5 预览版1 - .NET CORE 3.1)

从 Visual Studio 16.5 预览版1 开始,Visual Studio 中内置了 Windows Forms 设计器支持。要使用设计器:

  • 必须使用 Visual Studio 16.5 预览版1 或更新版本。
  • 需要在 Visual Studio 中启用设计器。转到 工具 → 选项 → 环境 → 预览功能,并选择“为 .NET Core 应用程序使用预览版 Windows Forms 设计器”选项。

图片描述

更多信息:

请注意,在此版本中,许多控件尚未受到设计器的支持。

旧版本的解决方法

从 Visual Studio 16.5 预览版1 开始,Visual Studio 中内置了 Windows Forms 设计器支持。但对于旧版本,您可以使用以下解决方法:

目前,有一个解决方法可以在.NET CORE Windows Forms项目中使用经典的.NET Windows Forms Designer。

这个解决方法依赖于在同一个解决方案中同时拥有经典WinForms应用程序和CORE WinForms应用程序,并且它们的根命名空间相同。

如果要添加新的可设计项,每次需要将其添加到经典项目中,然后将生成的3个文件(.cs、.designer.cs、.resx)移动到CORE应用程序中,并将它们作为链接添加到经典应用程序中。

对于编辑操作,由于它们在经典应用程序中作为链接可用,在经典应用程序的设计器中进行编辑。所有更改都会显示在CORE应用程序中。

准备解决方案以在.NET Core Winforms应用程序中使用Windows Forms Designer

  1. 创建Windows Forms .NET Core应用程序。(查看步骤和要求
  2. 在Visual Studio中打开该项目并保存包括解决方案在内的项目。
  3. 右键单击解决方案,选择添加新项目→从模板中选择Windows Forms项目,并将其命名为与Core应用程序相同的名称 +“ .Designer”,然后单击“确定”。
  4. 在经典框架项目的属性中,将默认命名空间设置为与Core应用程序相同的默认命名空间。
  • 清除两个项目中所有现有的文件并保存更改。
  • 添加表单或用户控件

    每次想要添加新表单或用户控件时,需要执行以下步骤:

    1. 在经典框架项目中,选择“添加新项”。
    2. 选择“Windows表单”或“用户控件”。
    3. 在设计器中进行一些更改,例如调整表单大小,这样将生成resx文件并保存。
    4. 在解决方案资源管理器中,右键单击该表单并选择“剪切”。
    5. 在核心应用程序中,粘贴所有项目(表单、设计器、resx)。
    6. 在经典应用程序中,右键单击并选择“添加现有项”。
    7. 浏览打开对话框到core app文件夹,并选择这3个已添加的文件并单击添加按钮附近的下拉菜单,选择“作为链接添加”。
    8. 编译解决方案。
    9. 使用Mad Kristensen的文件嵌套扩展或编辑项目文件,在经典应用程序中重新组织文件。

    现在,每当您需要在其中一个核心表单或用户控件文件上使用设计器时,只需使用经典Windows表单设计器打开Classic Framework项目中的链接文件即可。

    WPF - VS 2019 (16.0.3 .NET CORE 3.0)

    WPF .NET Core设计器的GA版本与.NET Core 3.0同时发布,并随Visual Studio一起发布。

    参考资料:

    WPF Designer 是完全独立于 Windows Forms Designer 的。我们在发布 .NET Core 3.0 同时,也发布了 WPF .NET Core 设计器的 GA 版本,并内置于 Visual Studio 中。在 Visual Studio 版本 16.3.0 中,我们遇到了一个问题:默认情况下 Enable XAML Designer 属性被设置为 false。这意味着当您单击 .xaml 文件时,设计器不会自动打开。请升级到最新的 Visual Studio 版本 16.3.1,以解决此问题。另一个修复选项是转到 工具 -> 选项 -> XAML Designer 并勾选 Enable XAML Designer。


    @BravoYeung 当你创建一个名为Form1的表单时,它会有一个From1.csForm1.designer.csForm1.resx。第一个文件包含构造函数和事件处理程序以及所有自定义代码,第二个文件(设计器)包含InitializeComponent方法和控件声明以及其他与设计有关的内容,第三个文件用于表单资源。默认情况下,设计器和资源文件嵌套在主cs文件下的解决方案资源管理器中。但是按照上述步骤后,解决方案资源管理器将显示它们未嵌套。第9步是将它们重新嵌套。 - Reza Aghaei
    需要更新以包括 16.5.2 版本。 - Jimi
    @Jimi 我不知道16.5.2中是否有重大更改,会改变在Windows Forms中启用设计师的方式。我所知道的最新公告是这个 - Reza Aghaei

    3

    针对 WinForms 项目,您可以参考这个视频

    如何解决 WinForms 设计器不支持 .net core 3.0 visual studio 2019

    由于该视频提供了更多详细信息,我们可以一步步地跟随。它还基于 Microsoft 官方的 github 项目 dotnet/winforms

    dotnet/winforms - 在 WinForms Core 中使用传统 WinForms 设计器

    我制作的相关代码(VS 项目)已经推送到 github:

    .netCore-WinForms_Designer


    对于 WPF 项目,您可以使用以下 XAML 设计器:

    在 WPF Core 应用程序中使用设计器的解决方法

    参考:

    dotnet/samples - WPF Hello World sample with linked files

    安装 vs 2019 专业版/企业版

    首先,您需要安装 vs 2019 专业版/企业版。然后需要安装 .net core 3.0 SDK。现在您可以尝试创建一个 .net core WPF 应用程序。

    1555775855179

    在设置相关项目名称和存储路径后,它会弹出:

    img2-BravoYeung

    在VS选项中的.NET Core下勾选“使用预览SDK”。

    完成设置后,重新启动vs以生效。
    使用VS内置模板,在.NET Core下创建名为“CoreHiWPF”的WPF项目。

    1555775855179

    1555775915106

    在创建的解决方案下,使用VS内置模板创建一个名为"HiWPF"的新WPF项目,.net框架类型。

    1555775957478

    1555775984667

    现在解决方案的文件结构如下:

    1555776045894

    更新 .net core WPF 的程序集名称 "CoreHiWPF",使两个项目的程序集名称相同

    右键单击项目 CoreHiWPF,选择 属性,然后将其 程序集名称 更改为 HiWPF

    1555773128801

    然后右键单击项目,点击“编辑CoreHiWPF.csproj”。

    1555773253120

    将代码添加如下:

    1555773381960

      <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 窗口了。

    1555773860860

    如果需要,修改MainWindow.xaml文件和相关.cs文件

    然后,在文件MainWindow.xamlGrid中添加两行: - 一行是支持换行的Label - 另一行是一个Exit按钮。

    接着,我为Exit按钮添加了Click事件,为Window添加了Loaded事件。

    modify

    更新代码后,按下F5运行,最终的用户界面如下:

    1555774408266

    这段代码已经上传到Github:

    .netCore-WPF_Designer

    你可以直接克隆它来查看。


    1

    1
    我删除了项目文件并重新创建了该项目,使其对我起作用。 新建->从现有代码创建项目...

    我也是。设计师在第一次工作后就停止了,我无法再加载它。所以我只是将 Form.csForm.Designer.cs 复制到一个新的位置,删除了应用程序,创建了一个新的应用程序,并使用从复制文件中提取的现有代码。 - SK-the-Learner

    1
    我刚刚发现,使用WinForms设计器打开文件的指令在.csproj.user文件中存在。
    <ItemGroup>
        <Compile Update="Form1.cs">
            <SubType>Form</SubType>
        </Compile>
    </ItemGroup>
    

    所以,如果像我一样,你已经在.gitignore文件中忽略了这个文件并做了git clean操作,那么你就无法再用设计师打开这个文件了。


    这种情况发生在我的.vbproj文件上。所有的<Subtype>Form</SubType>都被删除了。我添加了一个新的Form1.vb,保存并打开关闭了几次项目,最终它们神奇地回来了。 - ourmandave

    0

    如果表单设计器丢失,请尝试向项目添加另一个 Windows 表单。我这样做后,我的其他 Windows 表单的设计器出现了。

    如果您正在使用 Visual Studio 2019,请确保获取包含 Windows 表单设计器的最新更新。一些早期版本不包括它。


    0

    Microsoft Visual Studio 专业版 2019 版本 16.7.2 开箱即用。


    0

    尽管官方的WPF GitHub Repository声明:

    注意:WPF可视化设计器尚未推出,将成为Visual Studio 2019更新的一部分。

    但是有这个示例视频,其中使用了可视化设计器。

    希望对您有所帮助!


    该链接视频仅使用Visual Studio,而不是使用Visual Form Designer来处理xaml文件。 - Reza Aghaei

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接