将csproj文件从WinForm转换为WPF

5
我有一个Winform应用程序,它只有一个非常简单的表单,一个program.cs主文件和大约60个后端.cs文件。我想将该项目转换为WPF应用程序。在这里没有找到任何接近我想做的事情。
我需要:
- 转换csproj文件,以便允许我添加WPF窗口 - 该转换要“原地”完成,以保持我的源代码控制整洁,并避免添加所有后端文件到它们适当的文件夹中,添加对外部依赖项的引用等麻烦。 - 创建一个空的mainwindow.xaml(+.cs)文件,我将手动填充合适的控件。 - 然后,我将手动在视图和视图模型文件之间拆分旧表单文件的内容。
有没有比从头开始更容易做到这一点的方法?
编辑:我宁愿不将新的WPF UI托管到旧的winforms shell中,而是用wpf替换当前的表单应用程序。

编辑2:我不想将整个项目和架构转换为WPF(因为在SO上已经问答过多次),我完全理解这是两个不同的框架,我完全愿意手动进行更改。 我想将csproj转换为WPF应用程序,而不是Forms应用程序。


2
编码有关的任何内容吗? - L.B
https://dev59.com/InA65IYBdhLWcg3wrgwa - Alexei Levenkov
2
我肯定会从头开始。如果逻辑是如此普遍,你可以将“后端”文件制作成它们自己的程序集。虽然这绝对与编程有关,但不涉及编码。 - BradleyDotNET
@Alexei,恩,正如你所猜测的那样,你不是预期的收件人。这条评论应该发给L.B. - Vincent Hubert
尝试创建一个空的Winforms项目,然后创建一个空的WPF项目,最后比较这两个项目文件。 - John Saunders
显示剩余5条评论
2个回答

13

如果不想自己进行比较,简短的回答是:WPF的.csproj文件包含一个额外的属性。

<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

将其放在第一个<PropertyGroup>...</PropertyGroup>部分即可,不管它放在哪里都没关系。

{60dc8134-eba5-43b8-bcc9-bb4bc16c2548}的含义是这是一个WPF项目,{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}表示一个C#项目。你可以从这个SO问题了解有关项目类型GUID的更多信息。


@digitlworld 我同意。我不能删除我的回答,因为它是被接受的答案。 - John Saunders

0

从您的编辑2中看来,您只想将项目类型从“Winforms”更改为“WPF”,而不更改任何项目项。我不知道您为什么要这样做,但请尝试创建一个空的Winforms项目,然后创建一个空的WPF项目,然后比较这两个项目文件。

无论这两个空项目之间的差异是什么,请将该更改应用于您现有的Winforms项目。


我也想改变项目中的内容,但这个我知道怎么做 :) - Vincent Hubert

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