2017-09-14 4 views
0

ich ein WPF-Programm für das .NET-Framework erstellen. Ich muss den folgenden Befehl corflags ausführen, damit das Programm ordnungsgemäß funktioniert.Führen Sie corflags automatisch nach Build

corflags c:/[file location]/[file name].exe /32BITREQ+ 

Jetzt mache ich dies manuell die Visual Studio-Konsole Trog, aber ich möchte, dass automatisch tun, nachdem ein Build abgeschlossen. Ist das möglich?

Ich versuchte nach einer Lösung zu suchen, konnte aber keine finden. Meine beste Vermutung ist es, einen Befehl in der Befehlszeile des Post-Build-Ereignisses zu verwenden. Ich habe versucht zu folgen.

"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\corflags.exe" "$(ProjectDir)bin\$(ConfigurationName)\QardPrint.exe" /32BITREQ+ 

Dies gibt den folgenden Fehler. im Ausgabefenster.

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) 

In der Fehlerliste

Could not open file for writing QardPrint H:\VSWorkspace\VSTS\Quantore\LoginQard\QardPrint\corflags 

Statt mit CorFlags direkt habe ich versucht, auch die folgenden Dinge Hans Passant in den Kommentaren vorgeschlagen.

  • ProjectProperties -> Build -> Allgemein -> PlatformTarget: x86
  • ProjectProperties -> Build -> Plattform: x86

der Fehler dadurch nicht löse ich mit haben eine Oracle-Verbindung (Version 9.2). Mein manueller Befehl corflags löst dieses Problem.

+0

Sie haben den PATH nicht festgelegt, sodass corflags.exe gefunden werden kann. Suchen Sie im Ausgabefenster nach der genauen Fehlermeldung. Vermeide es, dies auf die harte Tour zu tun, wenn es einfach ist, das gleiche Ergebnis ohne ein Build-Ereignis zu erhalten. Projekt> Eigenschaften> Registerkarte Erstellen, Plattformziel = x86. –

+0

Plattformziel ist bereits auf x86. Ich brauche corflags für mein Problem. Ich habe den vollständigen Pfad zu corflags.exe auch versucht. Aktualisierte Frage mit voller Fehlermeldung aus dem Ausgabefenster. –

+0

Das ist die Fehlermeldung, die Sie bereits kennen, wir brauchen die vorherige. Dies funktioniert immer besser, wenn Sie alles anzeigen, was Sie im Ausgabefenster sehen. Und nein, du brauchst keine corflags. Wenn Sie es ohne eine Option ausführen, sehen Sie, dass 32BITREQ bereits aktiviert ist. Es ist also nicht sinnvoll, es wieder einzuschalten. –

Antwort

1

Dies löste den Fehler nicht, den ich mit einer Oracle-Verbindung (Version 9.2) habe. Mein manueller Befehl corflags löst dieses Problem.

Sie müssen achten Sie auf den Pfad der QardPrint.exe in der Befehlszeile, nachdem Sie Build-> Allgemein ändern -> Platform Ziel ist auf x86 Körperbau -> Platform = x86.

Nach Änderung Plattform Ziel x86 wurde die QardPrint.exe neu bei x86 Ordner generiert:

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

Wenn Sie den vorherigen Pfad in der Befehlszeile nicht „$(ProjectDir)bin\$(ConfigurationName)\QardPrint.exe“ ändern, die Sie erhalten Dieser Fehler. Ich habe den gleichen Fehler mit früheren Befehlszeile:

enter image description here

Wenn ich den Pfad zu korrigieren, kann alles, was funktioniert gut.

Hoffe, das hilft.

+0

Kann Stimme nicht verstehen, kann keine Erklärung geben? –

+0

Wird später etwas testen. Bin mir auch nicht sicher, warum jemand abstimmte. Danke für deinen Beitrag. –

+1

@MarkBaijens, np. Wenn diese Antwort Ihnen nicht hilft, lassen Sie mich bitte kostenlos wissen, ich werde weiter folgen. –

Verwandte Themen