Je suis l’exemple suivant pour utiliser les API WinRT dans une application Win32.
J’ai ajouté des références à System.Runtime
et System.Runtime.InteropServices.WindowsRunTime
mais lorsque j’ai ajouté la référence à Windows.winmd
Je reçois l’erreur suivante:
Erreur 1 Problème lors de la génération du manifeste. Impossible de charger le fichier ou l’assembly ‘C: \ Program Files (x86) \ Windows Kits \ 8.1 \ References \ CommonConfiguration \ Neutral \ Windows.winmd’ ou l’une de ses dépendances. Essayez de charger un programme avec un format incorrect.
J’ai essayé diverses configurations à l’aide de différents frameworks .NET et versions de Visual Studio. Que puis-je essayer?
Il semble que le réglage
true
dans le fichier de projet (par exemple .csproj) n’est pas compatible avec les références winmd.
Ce paramètre est ajouté lors de l’activation des parameters de sécurité ClickOnce (case à cocher Propriétés du projet => Sécurité => Activation des parameters de sécurité ClickOnce).
Jusqu’à présent, je ne pouvais pas trouver le moyen de résoudre le problème concret, mais j’ai trouvé une solution de contournement qui fonctionne dans mon cas: je viens de créer un projet de bibliothèque de classes distinct dans ma solution, référencé par le projet principal. Dans le fichier de projet de la bibliothèque de classe, j’ai ajouté la ligne
8.0
comme décrit dans l’article cité en référence.
Le projet de bibliothèque comstack et le projet principal peut également utiliser la DLL sans problèmes.
J’ai résolu un problème très similaire à la suite de cette solution stackoverflow qui vous permet de publier en excluant le winmd.