10 votes

Difficulté à convertir une application console en application WPF dans VS 2010

J'ai créé une application console dont j'ai ensuite décidé qu'elle fonctionnerait mieux en tant qu'application WPF. J'ai changé le type de sortie en application Windows et ajouté ce que je pense être les références nécessaires. Malheureusement, un clic droit sur le projet ne me permet pas d'ajouter un dictionnaire de ressources ou de nombreux autres types WPF. Qu'est-ce que j'ai manqué ?

11voto

RAJ Points 261

J'ai converti mon application console en application WPF en suivant les étapes suivantes
Tout ce que vous devez faire est de changer le guide du type de projet dans le fichier du projet. 1. Ajouter une référence à l'assemblage PresentationCore
2. Ajouter une référence à l'assemblage PresentationFramework
3. Ajouter une référence à l'assemblage WindowsBase
4. Allez dans les propriétés du projet, puis dans l'onglet Application, changez le type de sortie en Application Windows.
5. Créez un nouveau projet d'application WPF et copiez App.xaml et MainWindow ou tout autre fichier xaml dans votre application console.
Et la dernière chose à faire pour obtenir le dictionnaire de ressources lorsque vous cliquez avec le bouton droit de la souris sur le projet et que vous sélectionnez " ajouter ". Ouvrez votre fichier de projet, par exemple WpfApp.csproj dans le bloc-notes et ajoutez

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

en premier Groupe de propriétés élément après Alignement de fichiers il devrait ressembler à

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

Sauvegardez-le. Si votre projet est ouvert dans visual sutiod, il vous demandera de recharger le projet, cliquez sur oui. C'est tout, il fonctionne maintenant comme une application WPF et vous trouverez l'ajout de tous les menus qui sont disponibles sur l'application WPF.

6voto

Gregory A Beamer Points 10975

La méthode la plus simple serait de créer une nouvelle application WPF et de déplacer le code. La meilleure méthode serait de pousser la logique dans une bibliothèque d'entreprise afin que vous puissiez facilement utiliser une application console et une application WPF comme technologie de présentation pour la logique d'entreprise, car WPF est une technologie d'interface utilisateur, pas un type d'application.

D'un point de vue geek, si vous voulez résoudre le problème de la manière la plus dure pour apprendre, je créerais une application WPF séparée et examinerais le fichier projet. Il est fort probable qu'il y ait un petit bout de code qui fasse fonctionner les choses en WPF, ainsi que des références manquantes.

6voto

kmote Points 3948

J'ai commencé à modifier la réponse de RAJ (car les étapes qui y sont indiquées sont incomplètes), mais mes changements étaient un peu trop radicaux, j'ai donc décidé de poster ma réponse séparément.

Vous pouvez convertir une application console en une application WPF en suivant ces étapes :

  1. Ajoutez la référence aux assemblages suivants :

    • PresentationCore
    • PresentationFramework
    • WindowsBase
    • System.Xaml
  2. Ouvrez les propriétés du projet. Sur l'onglet Application, changez le type de sortie en Application Windows.

  3. Créez une nouvelle application WPF (par exemple, nommez-la " tempWPF ") et copiez App.xaml et MainWindow.xaml (ainsi que les fichiers .xaml.cs qui les accompagnent) dans votre application console.

    • Remplacer toutes les occurrences de " tempWPF " avec le nom de votre projet de console.
  4. Dans la fenêtre Propriétés de App.xaml, définissez les éléments suivants Action de construction a ApplicationDefinition (comme décrit aquí ).

  5. Retirez/supprimez le fichier Program.cs du projet. (Après avoir déplacé toute logique personnalisée de ce fichier, si nécessaire, bien sûr).

  6. Modifier le guide du type de projet. Pour ce faire, modifiez votre fichier de projet (par exemple, WpfApp.csproj) dans Notepad++ ou directement dans Visual Studio en ajoutant la ligne suivante quelque part dans le premier Groupe de propriétés élément :

    <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
  7. Rechargez votre projet dans Visual Studio.

1voto

aleph_null Points 3636

Comme tout le monde l'a dit, la façon pratique de faire un WPF est de simplement commencer un nouveau projet d'application WPF et d'adapter votre code console. Cependant, Gregory A Beamer a raison de souligner que vous pouvez vouloir la solution du geek.

C'est peut-être ici qu'il faut chercher la bonne option :

Dans le menu, cliquez sur Outils >> Personnaliser. Dans la boîte de dialogue "Personnaliser", cliquez sur l'onglet "Commandes", puis sur le bouton radio "Menus contextuels de l'éditeur". Vous pouvez maintenant modifier tous les menus contextuels de VS. Je suppose que ces menus contextuels sont automatiquement personnalisés pour chaque type d'application. Le menu contextuel utilisé pour ajouter un dictionnaire de ressources au projet devrait se trouver quelque part ici. Bien que les modifier manuellement puisse être une douleur dans le derrière, le point de vue du geek est qu'ils sont toujours là.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X