Je crée un programme WPF pour le framework .NET. J'ai besoin d'exécuter la commande corflags suivante pour que le programme fonctionne correctement.Exécution automatique des corflags après la génération
corflags c:/[file location]/[file name].exe /32BITREQ+
Maintenant, je ne ce creux manuellement la console de studio visuel, mais je voudrais le faire après une automaticly construction terminée. Est-ce possible?
J'ai essayé de chercher une solution mais je n'ai pas trouvé de solution. Ma meilleure estimation est d'utiliser une commande dans la ligne de commande de l'événement Post-build. J'ai essayé de suivre.
"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\corflags.exe" "$(ProjectDir)bin\$(ConfigurationName)\QardPrint.exe" /32BITREQ+
Cela provoque l'erreur suivante. dans la fenêtre de sortie.
1>Target "PostBuildEvent: (TargetId:81)" in file "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets" from project "H:\VSWorkspace\VSTS\Quantore\LoginQard\QardPrint\QardPrint.csproj" (target "CoreBuild" depends on it):
1>Using "Exec" task from assembly "Microsoft.Build.Tasks.Core, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
1>Task "Exec" (TaskId:58)
1> Task Parameter:WorkingDirectory=bin\x86\Debug\ (TaskId:58)
1> Task Parameter:Command="C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\corflags.exe" "H:\VSWorkspace\VSTS\Quantore\LoginQard\QardPrint\bin\Debug\QardPrint.exe" /32BITREQ+ (TaskId:58)
1> "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\corflags.exe" "H:\VSWorkspace\VSTS\Quantore\LoginQard\QardPrint\bin\Debug\QardPrint.exe" /32BITREQ+ (TaskId:58)
1> Microsoft (R) .NET Framework CorFlags Conversion Tool. Version 4.6.1055.0 (TaskId:58)
1> Copyright (c) Microsoft Corporation. All rights reserved. (TaskId:58)
1> (TaskId:58)
1>corflags : error CF001: Could not open file for writing
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(5019,5): error MSB3073: The command ""C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\corflags.exe" "H:\VSWorkspace\VSTS\Quantore\LoginQard\QardPrint\bin\Debug\QardPrint.exe" /32BITREQ+" exited with code 1.
1>Done executing task "Exec" -- FAILED. (TaskId:58)
Dans la liste des erreurs
Could not open file for writing QardPrint H:\VSWorkspace\VSTS\Quantore\LoginQard\QardPrint\corflags
Au lieu d'utiliser directement corflags j'ai essayé aussi les choses suivantes Hans suggéré dans les Passant commentaires.
- ProjectProperties -> Construire -> Général -> PlatformTarget: x86
- ProjectProperties -> Construire -> Plate-forme: x86
Cela n'a pas résolu l'erreur que j'ai avec une connexion oracle (version 9.2). Ma commande corflags manuelle résout ce problème.
Vous n'avez pas défini le chemin afin que corflags.exe puisse être trouvé. Regardez dans la fenêtre de sortie pour le message d'erreur exact. Évitez de le faire à la dure quand il est simple d'obtenir le même résultat sans un événement de construction. Projet> Propriétés> onglet Construire, Platform target = x86. –
La cible de la plateforme est déjà sur x86. J'ai besoin de corflags pour mon problème. J'ai essayé le chemin complet de corflags.exe aussi. Question mise à jour avec un message d'erreur complet dans la fenêtre de sortie. –
C'est le message d'erreur que vous connaissez déjà, nous avons besoin de celui qui le précède. Cela fonctionne invariablement mieux lorsque vous montrez tout ce que vous voyez dans la fenêtre Sortie. Et non, vous n'avez pas besoin de corflags. Facile à voir en l'exécutant sans option, vous verrez que 32BITREQ est déjà activé. Donc, le rallumer n'est pas raisonnable. –