2011-11-09 16 views
8

Creé una aplicación de consola que luego decidí que funcionaría mejor como una aplicación WPF. Cambié el tipo de salida a la aplicación de Windows y agregué lo que creo que son las referencias necesarias. Desafortunadamente, al hacer clic derecho en el proyecto no puedo agregar un diccionario de recursos u otros muchos tipos de WPF. ¿Qué me he perdido?Problema al convertir una aplicación de consola a una aplicación WPF en VS 2010

+0

general, recomendaría iniciar un nuevo proyecto y copiar/incluir todos los archivos de proyecto de la solución de aplicación de consola – IAbstract

+2

¿Qué mensaje de error exacto que están recibiendo? Además, sería mejor desacoplar la GUI y la lógica comercial. Por ejemplo, podría usar el patrón MVP (Modelo-Vista-Presentador) de Martin Fowler, en uno de sus dos sabores (Vista pasiva y el otro, no recuerdo el nombre). Si hace esto, puede tener más de una vista (Consola y WPF) y usar cualquiera de ellos –

+0

Darío, ¿podría publicar su comentario como respuesta? Esa es la ruta que terminé tomando. Gracias. – bshacklett

Respuesta

6

El método más fácil sería crear una nueva aplicación WPF y mover el código. El mejor método sería insertar la lógica en una biblioteca comercial para que pueda usar fácilmente una aplicación de consola y una aplicación wpf como tecnología de presentación para la lógica empresarial, porque WPF es una tecnología de interfaz de usuario, no un tipo de aplicación.

Desde el punto de vista geek, si quiere resolver la difícil manera de aprender, crearía una aplicación WPF separada y examinaría el archivo proj. Lo más probable es que haya algunas cosas que hagan que las cosas funcionen como WPF, así como algunas referencias que faltan.

1

Como todos los demás dijeron, la forma práctica de hacer un WPF es simplemente iniciar un nuevo proyecto de aplicación WPF y adaptar el código de su consola. Sin embargo, Gregory A Beamer tiene razón al señalar que es posible que desee la solución friki.

Tal vez este sería el lugar para buscar la opción correcta:

En el menú, pulse Herramientas >> Personalizar. En el cuadro de diálogo "Personalizar", presione la pestaña "Comandos" y luego haga clic en el botón de opción "Menús contextuales del editor". Ahora puede editar todos los menús contextuales en VS. Supongo que estos menús contextuales se personalizan automáticamente para cada tipo de aplicación. El menú de contexto utilizado para agregar un diccionario de recursos al proyecto debería estar en algún lugar aquí. Aunque cambiarlos manualmente puede ser un dolor en la espalda, el punto friki es que todavía están allí.

10

He convertido mi aplicación de consola a la aplicación WPF por debajo de los pasos
Todo lo que necesita hacer es cambiar el tipo de proyecto guid en el archivo del proyecto. 1. Agregar referencia para el montaje PresentationCore
2. Agregar referencia para el montaje PresentationFramework
3. Agregar referencia para el montaje WindowsBase
4. Vaya a Propiedades del proyecto a continuación, en la pestaña de aplicaciones tipo de salida para el cambio de aplicaciones de Windows.
5. Cree un nuevo proyecto de aplicación WPF y copie App.xaml y MainWindow o Anyother xaml files en su aplicación de consola.
Y lo último para obtener el diccionario de recursos cuando haga clic derecho en el proyecto y seleccione agregar Abra su archivo de proyecto, p. WpfApp.csproj en la libreta y añadir

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

en primera PropertyGroup elemento después FileAlignment, que debe ser similar

<?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> 

guardarlo. si su proyecto está abierto en sutiod visual, solicitará volver a cargar el proyecto, haga clic en sí. Eso es, ahora funciona como aplicación WPF y encontrará Agregar todos los menús que están disponibles en la aplicación WPF.

+1

También tuve que agregar "nueva aplicación(). Ejecutar (nueva MainWindow())" en mi Program.cs para que comience. [STAThread] fue requerido también. –

+0

Sin el atributo ProjectTypeGUID, pude manualmente agregar archivos y trabajar. Una vez que agregué el GUID del proyecto, el menú contextual del explorador de la solución VS y la plantilla del proyecto comenzaron a mostrar la ventana y otros tipos de wpf. – Naresh

3

Empecé a editar la respuesta de RAJ (ya que los pasos enumerados allí están incompletos), pero mis cambios fueron un poco drásticos, así que decidí publicar mi respuesta por separado.

Puede convertir una aplicación de consola a una aplicación WPF con estos pasos:

  1. añadir una referencia a los siguientes grupos:
    • PresentationCore
    • PresentationFramework
    • WindowsBase
    • Sistema .Xaml
  2. Abrir propiedades del proyecto. En la pestaña Aplicación, cambie el tipo de salida a la aplicación de Windows.
  3. Cree una nueva aplicación WPF (por ejemplo, llámelo "tempWPF") y copie App.xaml y MainWindow.xaml (junto con los archivos .xaml.cs de respaldo para ambos) en su aplicación de consola.
    • Reemplazar todas las apariciones de "tempWPF" con el nombre de su proyecto de consola.
  4. En la ventana Propiedades para App.xaml, establezca Build Acción a ApplicationDefinition (como se describe here).
  5. Eliminar/Eliminar el archivo Program.cs del proyecto. (Después de reubicar cualquier lógica personalizada de ese archivo según sea necesario, por supuesto).
  6. Cambiar el tipo de proyecto guid. Para ello, edite el archivo de proyecto (por ejemplo WpfApp.csproj) ya sea en Notepad ++ o directly in Visual Studio, añadiendo la siguiente línea en algún lugar de primera PropertyGroup elemento:

    <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> 
    
  7. volver a cargar el proyecto en Visual Studio.

Cuestiones relacionadas