构建后自动运行corflags

时间:2017-09-14 09:46:01

标签: .net visual-studio msbuild corflags

我为.NET框架构建了一个WPF程序。我需要运行以下corflags命令才能使程序正常工作。

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

现在我通过visual studio控制台手动执行此操作,但我希望在构建完成后自动执行此操作。这可能吗?

我试图寻找解决方案,但找不到解决方案。我最好的猜测是在Post-build事件命令行中使用命令。我试着跟随。

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

这会产生以下错误。在“输出”窗口中。

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)

在错误列表中

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

我没有直接使用corflags,而是尝试了Hans Passant在评论中提出的以下内容。

  • ProjectProperties - > Build - > General - > PlatformTarget:x86
  • ProjectProperties - > Build - > Platform:x86

这并没有解决我对oracle连接(版本9.2)的错误。我的手动corflags命令确实解决了这个问题。

1 个答案:

答案 0 :(得分:1)

  

这并没有解决我对oracle连接(版本9.2)的错误。我的手动corflags命令确实解决了这个问题。

更改Build-> General后,需要在命令行中注意QardPrint.exe的路径 - >平台目标设置为x86 Build-- >平台= x86

将平台目标更改为x86后,QardPrint.exe在 x86 文件夹中新生成:

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

如果您未在命令行“$(ProjectDir)bin\$(ConfigurationName)\QardPrint.exe”中更改上一个路径,则会出现该错误。我在上一个命令行中遇到了同样的错误:

enter image description here

如果我改正了路径,那么一切都可以正常工作。

希望这有帮助。