我想在 Visual Studio 的构建事件中使用 powershell 脚本,并且需要使用 Visual Studio 本身定义的一些宏。
这是我的 powershell 脚本示例:
"Updating version for Project:"
"$ProjectDir"
Run Code Online (Sandbox Code Playgroud)
然后在项目的预构建事件中我这样调用它:
powershell.exe -file "$(SolutionDir)Resources\UpdateVersion.ps1" -path $(SolutionDir)
Run Code Online (Sandbox Code Playgroud)
当我构建项目时,我正确调用了脚本,但包含项目路径的字符串为空。
有没有一种方法可以将所有 Visual Studio 宏传递给 powershell 脚本,而不需要将它们显式地作为脚本参数传递(我必须使用很多宏,这会很乏味)?
我在 Visual Studio 2017 中有一个 C# 解决方案。我还有一个名为的批处理脚本foobar.bat,其中包含以下代码:
echo foobar : error 1: This is a test error.
Run Code Online (Sandbox Code Playgroud)
我的目标是在构建特定项目时只让上面的测试错误消息出现在 Visual Studio 的错误列表中,并在它出现时停止构建。所以我把[path to script]\foobar.bat项目的post-build事件命令行放进去,然后build。现在我在 Visual Studio 错误列表中收到两条错误消息:
The command "[path to script]\foobar.bat" exited with code -1.This is a test error.在这种情况下,查看仅打印出我的构建后事件内容的第一条错误消息并没有帮助。我想抑制这个初始错误,以便只有我的自定义错误消息显示在错误列表中(或者至少将其更改为更有用的内容)。
这是我尝试过的:
2>nul到我的批处理脚本的末尾没有任何效果。1>nul到我的批处理脚本的末尾会抑制这两个错误,这不是我想要的。&set errorlevel=0到我的批处理脚本的末尾没有任何效果。exit 0到我的批处理脚本的末尾没有任何效果。<Target
Name="PostBuildEvent"
Condition="'$(PostBuildEvent)'!=''"
DependsOnTargets="$(PostBuildEventDependsOn)">
<Exec WorkingDirectory="$(OutDir)" Command="$(PostBuildEvent)" IgnoreExitCode="true" /> …Run Code Online (Sandbox Code Playgroud) c# post-build-event visual-studio build-events visual-studio-2017
我工作的其中一个项目需要读取注册表项以确定某些值.通常在安装期间会写入值.
因为我想在本地运行项目(没有安装),我想在构建完成后编写该值.
有一种简单的方法可以做到吗?
我试图弄清楚如何调用PowerShell脚本,在文件名中使用空格作为Delphi构建事件.
从CMD我必须打电话powershell.exe -Command "& 'Filename With Spaces.ps1'"哪个工作正常.
另一方面,Delphi将&符号加倍,并试图将命令转换为两个命令.
我试图将其设置为构建事件:
powershell.exe -Command "& '$(PROJECTDIR)\Prebuild.ps1' $(PROJECTDIR)"
Run Code Online (Sandbox Code Playgroud)
MSBuild执行的是:
powershell.exe -Command "&& 'D:\SVN\AccuLib 3.0\VCLUI\Prebuild.ps1' D:\SVN\AccuLib 3.0\VCLUI"
Run Code Online (Sandbox Code Playgroud)
那么ps1从Delphi构建事件中调用包含空格的文件需要什么呢?