vs2015 无法打开窗体form_极客学院 | 解决 VS2019 中.net core WinForms暂时无法使用设计器的临时方法...

546e41b51d8f9987de136713bb2660e8.png

解决 vs2019中暂时无法为.net core WinForms使用 Designer 的临时方法

以下方法来自于微软github开源项目WinForms:

dotnet/winforms - Using the Classic WinForms Designer in WinForms Core, 请放心使用.

目前.net core下的 Windows Forms的可视化设计器(Designer)尚不可用,后续的Visual Studio 2019 Update才会支持该部分的功能。不过目前我们想在vs2019中使用 Designer,有一种临时解决方法。

可以使用Visual Studio来处理链接文件(Link files)的功能,并将其WinForms Designer用于Classic Framework (即.net Framework的Win Forms项目)。

具体的解决方法是在同一个Solution下创建两个项目:

  • 用于设计WinForms应用程序的.NET Framework应用程序(.net core项目)
  • 用于运行WinForms应用程序的.NET Core应用程序(.net Framework 项目)

而两个应用程序(.net core项目和相应.net Framework 项目)都将引用相同的文件。

在该方法中,只要添加新的Win Form或新的UserControl,就需要在Classic Framework WinForms项目(.net Framework的Win Forms项目)中重新设置Form文件的嵌套层级关系,推荐使用Mad Kristensen的文件嵌套扩展来完成这件事,而不是使用文本编辑器来修补项目文件(.csproj文件),建议事先安装好该vs插件。

完整步骤:

安装 vs 2019 professional/enterprise版本

先安装 vs 2019 professional/enterprise版本,安装好.net core 3.0 SDK,此时试着创建一个.net core下的 win forms 应用,

34cccc9598716c364487cfcfa98adfbd.png

设置好相关项目名和存放路径后,会弹出:

f168a85e4d69bd771853631120ffb90c.png

在vs的设置里,勾选.NET core下的"Use preview SDK"

41bbafd64d4776d117b4b72fd0125ac0.png

设置完,重启vs才能生效。

使用vs自带的模板,选择其中的 .net core forms 创建Project, 取名为"CoreHelloForm"

34cccc9598716c364487cfcfa98adfbd.png

b073f1a545f2a97dd89bf294a343d3f9.png

此时的文件目录为:

c9b8617b0c2e5edb01f6744b6d44768b.png

在刚创建的Solution中使用vs自带的模板,选择其中的.net framework forms添加新的project,取名为"CoreHelloForm.Designer"

cfac867ea6e93ce5a705a67b4d7970ac.png

7531657a9e2e8484d1b68ff28af26c83.png

649089a2514ba2f42bc1ee4f43f35fd4.png

此时Solution中的文件目录为:

e0b5033ac8d351d1c26fa033a86dafe8.png

将.net core form下的Form1 重命名为 MainForm

v2-8f74c6be6e373130299ec74c4daea4a1_b.gif

fc8fdf2677ebeeef415799feb531f5d0.gif

此时,选中 .net core form项目,右键选择 “Set as start up project”,按F5运行项目,可看到窗体:

e43958d13e8d336c8a180507c39d16e7.png

然后点窗体右上角的x关闭按钮,停止运行.

测试从命令行是否能正常 build.net core项目

右键 .net core form项目,点击"Open Folder in File Explorer",

3cf530616ec73971183a20220743e193.png

9cb86906263bc43f5ce08d8dadfefbd4.png

删除此处的bin文件夹

在上方地址栏输入cmd进入命令行:

f0ddd79cafd933d98cce05c1aa93c6d8.png

输入dotnet --version,看是否能看到具体.net core版本,如果没问题,继续下面的步骤。

输入dotnet build

87f41e8669842c48724286b5619c883e.png

此时,回到文件目录D:CodingcsProjCoreHelloFormCoreHelloFormbinDebugnetcoreapp3.0,双击其中的exe文件,窗体能正常打开。

297b43835a6c5d77a9baf0b6715936fb.png

删除项目CoreHelloForm.Designer中所有Form1相关的文件

接着选中.net framework项目CoreHelloForm.Designer下的Form1,右键点击"Delete",

7e3272b304d86f2f3bdb280357aff72d.png

会出现下面这个警告框,点OK

在项目`CoreHelloForm.Designer中以"As Link"的方式引用.net core form项目下的MainForm相关文件

选中项目CoreHelloForm.Designer,右键Add,选"Existing Item"

87184de961df44e7c4bd8dd6e3611eea.png

打开文件选择框之后,选择.net core项目CoreHelloForm下的下图中高亮的3个文件.

3ecdb577e284de9bfed5a10d0af55c4c.png

点击Add As Link

从Extension market下载并安装扩展 File Nesting

下载地址:File Nesting for VS下载到的文件是File_Nesting_v2.6.85.vsix, 关闭vs,双击,勾选上相应版本的vs安装即可~

5884a90c70f10c9c9fb208f3fc1bb3a9.png

使用 File Nesting来修改 Link 的 MainForm相关文件的层次关系.

先选中文件MainForm.Designer.csMainForm.resx,然后右键点击 "File Nesting" -> "Auto-nest selected items"

a85dc8805d71fba52429ab9b583efe30.png

再右键点击 "File Nesting" -> "Nest item",选择MainForm

0c6f9b8a6655385a2b59d59a20d8add8.png

OK继续.

再进行一次重命名

.Designer项目下的Program.cs中的Form1改为MainForm.

2972ae76e21cb88c8c79eae553528524.gif

重设启动项项目

选中项目CoreHelloForm.Designer,右键 Rebuild, 选中.net framework项目CoreHelloForm.Designer,右键选择 “Set as start up project”.

关闭 Solution中 项目CoreHelloForm.Designer中MainForm的干扰文件

此时,如果试着双击项目CoreHelloForm.Designer中的MainForm.cs,会弹出如下警告。

09cfe5da84f2e8db488a487360ac1a8b.png

那是因为项目CoreHelloForm.Designer中的MainForm.cs所Link 的与MainForm相关的文件已经在 项目CoreHelloForm 中 打开。

我们将已打开的文件中与项目CoreHelloForm.Designer中Form相关的文件都关闭掉,比如:

3a3a8c9427d8d5a9290d01050a9445fc.png

试用 Designer

现在,再双击项目CoreHelloForm.Designer中的MainForm.cs,就能看到 Designer 了。

e2184a32cfa3b7e27ff1614549b12ee0.png

此时,可以进行可视化编辑了。

比如,我做了如下几处修改:

  • 改掉 Form的 Title

f4e15c32930eb8f30f2b254a6e8ad580.png
  • 改掉文本框的内容.

947ed4f19f957370c380bc42e30795b0.png
  • 改掉窗体的图标(icon)

e314bf05bc8e6dc01e87c774d97a9ab4.png

F5,运行的效果图为:

093792b10af9f9e12922cfd0327cbea3.png

项目代码已推到github,欢迎Forkstar.
传送门:.netCore-WinForms_Designer, 如果觉得自己配置起来麻烦,也可以 clone 下来自己体验一把喔~

查看本人最近其他原创作品请移步:

  • ASP.NET Core开发者成长路线图
  • 中国.NET:各地微软技术俱乐部汇总(持续更新中...)
  • 微软XAML Studio - WPF, Sliverlight, Xamarin, UWP等技术开发者的福音

参考资料

WinForms Core App - A workaround invoking the Classic Framework Designer.

本文首发于本人的博客园文章 https://www.cnblogs.com/enjoy233/p/workaround_to_use_the_designer_in_winForms_Core_App.html,转载请注明出处,谢谢配合~

原创不易,你的支持和认可将让我写出更好的内容,更多.干.货 可关|注|公|号「大白技术控」,持续输出优质文章~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值