标签: build-events

在从构建事件调用的 powershell 脚本中使用 Visual Studio 宏

我想在 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 脚本,而不需要将它们显式地作为脚本参数传递(我必须使用很多宏,这会很乏味)?

powershell post-build-event visual-studio build-events

5
推荐指数
1
解决办法
794
查看次数

如何在 Visual Studio 2017 (C#) 中抑制初始构建后事件错误?

我在 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 错误列表中收到两条错误消息:

  1. The command "[path to script]\foobar.bat" exited with code -1.
  2. This is a test error.

在这种情况下,查看仅打印出我的构建后事件内容的第一条错误消息并没有帮助。我想抑制这个初始错误,以便只有我的自定义错误消息显示在错误列表中(或者至少将其更改为更有用的内容)。

这是我尝试过的:

  • 添加2>nul到我的批处理脚本的末尾没有任何效果。
  • 添加1>nul到我的批处理脚本的末尾会抑制这两个错误,这不是我想要的。
  • 添加&set errorlevel=0到我的批处理脚本的末尾没有任何效果。
  • 将该行添加exit 0到我的批处理脚本的末尾没有任何效果。
  • 将以下内容添加到我的 .csproj 文件(根据本文)的末尾会抑制第一个错误,但使其不再失败:
<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

4
推荐指数
1
解决办法
1537
查看次数

如何从VS post build事件中编写注册表项?

我工作的其中一个项目需要读取注册表项以确定某些值.通常在安装期间会写入值.

因为我想在本地运行项目(没有安装),我想在构建完成后编写该值.

有一种简单的方法可以做到吗?

post-build-event visual-studio build-events

3
推荐指数
1
解决办法
1737
查看次数

如何在构建事件中使用&符号?

我试图弄清楚如何调用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构建事件中调用包含空格的文件需要什么呢?

delphi powershell build-events delphi-xe2

3
推荐指数
1
解决办法
365
查看次数