У меня есть проект .NET Framework 4.5.2 WebAPI2.При создании проекта в Visual Studio я хочу, чтобы сценарий powershell, который я написал, выполнялся перед каждой сборкой.Если сценарий powershell завершается с любым ненулевым кодом, я хочу, чтобы сборка завершилась неудачно, и сообщение об ошибке из сценария powershell, видимое в выходных данных Visual Studio.
Вот как я изменил свой файл csproj так,far:
<Project ToolsVersion="12.0" DefaultTargets="MyCustomTarget;Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
...
<Target Name="MyCustomTarget">
<PropertyGroup>
<PowerShellExe Condition=" '$(PowerShellExe)'=='' ">
%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe
</PowerShellExe>
<ScriptLocation Condition=" '$(ScriptLocation)'=='' ">
C:\Code\MyScript.ps1
</ScriptLocation>
</PropertyGroup>
<Exec Command="$(PowerShellExe) -NonInteractive -executionpolicy Unrestricted -command "& { $(ScriptLocation) } "" />
</Target>
Для простоты мой скрипт выглядит следующим образом:
if(((get-date -Format "mm") % 2) -eq 0){ exit 0 } else { write-error "The minute is not equally divisible by 2.";exit 1 }
Однако, когда я собираюсь построить проект, я теперь вижу свой скрипт powershell, открытый в блокноте исборка останавливается, пока я не закрою блокнот.После закрытия я получаю сообщение об ошибке и не могу найти способ ее устранения.Любая помощь будет высоко ценится.
The command "
%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe
-NonInteractive -executionpolicy Unrestricted -command "& {
C:\Code\MyScript.ps1
} "" exited with code 9009. MyWebApi2Project C:\Code\MySolution\MyWebApi2Project\MyWebApi2Project.csproj 269