无法在VS 2010中将控制台应用程序转换为WPF应用程序

时间:2011-11-09 21:56:53

标签: c# .net wpf console port

我创建了一个控制台应用程序,后来我决定将其作为WPF应用程序运行得更好。我将输出类型更改为Windows应用程序并添加了我认为必要的引用。不幸的是,右键单击项目不允许我添加资源字典或许多其他WPF类型。我错过了什么?

4 个答案:

答案 0 :(得分:11)

我确实通过以下步骤将我的控制台应用程序转换为WPF应用程序 您需要做的就是在项目文件中更改项目类型guid。 1.添加对PresentationCore组件的引用
2.添加对PresentationFramework组件的引用
3.添加对WindowsBase程序集的引用
4.转到项目属性,然后在“应用程序”选项卡上将输出类型更改为Windows应用
5.创建WPF应用程序的新项目,并将App.xaml和MainWindow或Anyother xaml文件复制到控制台应用程序。
当你右键单击项目并选择添加时,最后得到资源字典 打开项目文件,例如记事本上的WpfApp.csproj并添加

**<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>**
FileAlignment 之后的第一个 PropertyGroup 元素中的

,它应该看起来像

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{58688A7B-82F4-4229-949A-C4249DAB43FC}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ConsoleApplication1</RootNamespace>
<AssemblyName>ConsoleApplication1</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<StartupObject>
</StartupObject>

保存。如果您的项目在视觉上打开,它将要求重新加载项目,单击是。 多数民众赞成它,它现在作为WPF应用程序工作,你会发现添加WPF应用程序上可用的所有菜单。

答案 1 :(得分:6)

最简单的方法是创建一个新的WPF应用程序并移动代码。最好的方法是将逻辑推入业务库,这样您就可以轻松地使用控制台应用程序和wpf应用程序作为业务逻辑的表示技术,因为WPF是一种用户界面技术,而不是应用程序类型。

从极客的角度来看,如果你想解决困难的学习方法,我会创建一个单独的WPF应用程序并检查proj文件。很可能在那里有一点点可以让事情像WPF一样工作,以及一些缺失的参考资料。

答案 2 :(得分:4)

我开始编辑RAJ的答案(由于列出的步骤不完整),但我的更改有点过于激烈,所以我决定单独发布我的答案。

您可以使用以下步骤将控制台应用程序转换为WPF应用程序:

  1. 添加对以下程序集的引用:
    • PresentationCore
    • PresentationFramework
    • WindowsBase
    • System.Xaml
  2. 打开项目属性。在“应用程序”选项卡上,将输出类型更改为Windows应用程序。
  3. 创建新的WPF应用程序(例如,将其命名为&#34; tempWPF &#34;)并复制App.xaml和MainWindow.xaml(以及两者的后备.xaml.cs文件)到您的控制台应用程序
    • 替换所有出现的&#34; tempWPF &#34;使用控制台项目的名称。
  4. 在App.xaml的“属性”窗口中,将构建操作设置为 array (size=3) 1 => array (size=6) 'contact_id' => int 1 'exact_email_found' => int 0 'half_email_found' => int 0 'possible_by_postal_code' => int 1 'found_first_name' => int 0 'found_last_name' => int 1 3 => array (size=6) 'contact_id' => int 3 'exact_email_found' => int 0 'half_email_found' => int 0 'possible_by_postal_code' => int 0 'found_first_name' => int 1 'found_last_name' => int 0 2 => array (size=6) 'contact_id' => int 2 'exact_email_found' => int 1 'half_email_found' => int 0 'possible_by_postal_code' => int 0 'found_first_name' => int 1 'found_last_name' => int 0 (如here所述)。
  5. 从项目中删除/删除Program.cs文件。 (当然,在根据需要重新定位该文件中的任何自定义逻辑之后)。
  6. 更改项目类型guid。要执行此操作,请在Notepad ++或directly in Visual Studio中编辑项目文件(例如WpfApp.csproj),在第一个 PropertyGroup 元素中的某处添加以下行:

    ApplicationDefinition
  7. 在Visual Studio中重新加载项目。

答案 3 :(得分:1)

与其他人一样,制作WPF的实用方法是启动一个新的WPF应用程序项目并调整您的控制台代码。然而,Gregory A Beamer指出你可能想要极客解决方案是正确的。

也许这是寻找合适选项的地方:

在菜单中,点击工具&gt;&gt;定制。在“自定义”对话框中,单击“命令”选项卡,然后单击“编辑器上下文菜单”单选按钮。您现在可以编辑VS中的所有上下文菜单。我假设这些上下文菜单会针对每种应用程序类型自动定制。用于向项目添加资源字典的上下文菜单应该位于此处。虽然手动改变它们可能是后面的痛苦,但极客的意思是它们仍然在那里。