Comment migrer des projets Wpf au nouveau format VS2017

Je migre mes projets vers le nouveau format de visual studio 2017, qui fonctionne correctement pour toutes les bibliothèques standard. Je rencontre maintenant des problèmes avec les bibliothèques de l’interface utilisateur où j’utilise Wpf / Xaml.

Je n’arrive pas à comprendre comment faire cela pour mes contrôles utilisateur. Le vieil article ne semble plus être valide.

Tout le monde a une idée de comment faire cela ou si c’est même possible.

Il y a Sunburst.NET.Sdk.WPF qui permet de l’utiliser comme SDK .NET. Voici un exemple complet pour une application WPF où tous les fichiers .cs et .xaml seront automatiquement inclus:

   WinExe net40      

Lorsque vous construisez ce projet avec msbuild (notamment, je n’ai pas eu de chance avec la dotnet build ), il télécharge automatiquement le SDK de NuGet et configure tout.

Vous pouvez utiliser le modèle ci-dessous pour remplacer l’ancien .csproj par. Cela résout quelques problèmes que d’autres modèles de personnes avaient.

  1. Vous n’êtes pas obligé d’inclure des fichiers intermédiaires *.g.cs comme certains le suggèrent.
  2. Aucune erreur Main not found ne se produira.
  3. Non Unable to run your project. The "RunCommand" property is not defined. Unable to run your project. The "RunCommand" property is not defined. une erreur se produira.
  4. Inclut les parameters et les ressources par défaut déjà configurés.

Modèle:

   $(MSBuildExtensionsPath)\$(VisualStudioVersion)\Bin\Microsoft.CSharp.targets net47 WinExe    full true     Designer MSBuild:UpdateDesignTimeXaml    Designer MSBuild:UpdateDesignTimeXaml                 

Après quelques recherches et essais et erreurs, je l’ai fait fonctionner!

Ceci est la version finale de wpf csproj:

   $(MSBuildExtensionsPath)\$(VisualStudioVersion)\Bin\Microsoft.CSharp.targets net451 MyWpfLibrary MyWpfLibrary                           

La solution ci-dessus fonctionne pour les DLL Wpf, mais je l’ai inversée car Resharper et le concepteur Visual Studio n’étaient plus fonctionnels après cette modification. Principalement parce qu’ils ne pouvaient pas associer le xaml et le code-behind au moment de la conception. Mais le projet comstack et fonctionne.

Pour un exécutable wpf, vous devez procéder comme suit:

   $(MSBuildExtensionsPath)\$(VisualStudioVersion)\Bin\Microsoft.CSharp.targets net451 WinExe MyNamespace MyExe MyExe.ico app.manifest MyNamespace.App