2017-09-14 1 views
0

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.

+0

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. –

+0

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. –

+0

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. –

Répondre

1

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 devez attention à la voie de QardPrint.exe dans votre ligne de commande après avoir modifié Build-> Général -> objectif de la plate-forme est définie sur x86 Construire -> Plate-forme = x86.

Après le changement cible de plate-forme pour x86, le QardPrint.exe était nouveau généré à x86 dossier: Si vous ne changez pas

$(ProjectDir)bin\x86\$(ConfigurationName)\QardPrint.exe 

le chemin précédent dans la ligne de commande « $(ProjectDir)bin\$(ConfigurationName)\QardPrint.exe », vous obtiendrez cette erreur. Je suis la même erreur avec la ligne de commande précédente:

enter image description here

Si je corrige le chemin, tout chose peut fonctionne très bien.

Espérons que cela aide.

+0

Ne peut pas comprendre le vote vers le bas, peut donner une explication? –

+0

Je ferai des tests plus tard. Je ne sais pas non plus pourquoi quelqu'un a voté. Merci pour votre contribution. –

+1

@MarkBaijens, np. Si cette réponse ne vous aide pas, s'il vous plaît laissez-moi savoir gratuitement, je vais continuer à suivre. –