我目前正在开发一个简单的插件,可以从Jenkins构建中检索结果.我正在扩展通知程序并使用build.getResults()获取信息.但是,当我上传我的插件时,我无法将其设置为后构建操作.
当我运行我的构建时,它们会中断,build.getResults()因为我在构建仍在运行时尝试获取结果.
我该怎么做才能正确获得构建结果?
我有一个MSBuild脚本,除了我的后期构建步骤之外,还要做我需要做的所有事情(请参阅我之前提出的问题:MSBuild条件Exec?).
我正在寻找的是构建许多csproj文件,并且当且仅当项目构建时,可选择执行构建后步骤.我不想一直执行我的后期构建步骤,否则我的最终输出上的时间戳将被不必要地修改(并且它使得构建过程非常耗时而无缘无故).
在我的MSBuild脚本中,我为每个csproj文件提供了以下内容:
<Target Name="ProjectName">
<MSBuild Projects="PathToProject" Properties="Configuration=$(buildtype)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
编辑: 我认为我真正想做的是检测CoreCompile任务何时为每个项目运行.如果在某种情况下有某种方法来检查这个问题?
有任何想法吗?
我是MSBuild的新手,所以也许我完全走错了轨道!
谢谢,艾伦
与此处描述的问题相同,我想将Shell脚本作为TARGET“ package”的POST_BUILD命令执行。目标平台是Debian / Ubuntu。
我将以下内容添加到CMakeLists的末尾:
add_custom_command(
TARGET package
POST_BUILD
COMMAND bash ${PROJECT_BINARY_DIR}/fixup_deb.sh
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
COMMENT "Fix file-permissions of md5sum files in debian package"
)
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。当我调用“ make package”时,脚本不会更改。
目前,我有一个针对自定义目标的解决方法:
add_custom_target(
correctDeb
COMMAND bash ${PROJECT_BINARY_DIR}/fixup_deb.sh
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
)
Run Code Online (Sandbox Code Playgroud)
但是,如果在调用“ make package”时自动完成此操作,则对我来说将更加舒适和更加故障安全。
顺便说一下,$ {PROJECT_BINARY_DIR} /fixup_deb.sh的生成也可以很好地与以下对象配合使用:
configure_file( "${CMAKE_CURRENT_LIST_DIR}/debian/fixup_deb.sh.in" "${PROJECT_BINARY_DIR}/fixup_deb.sh" @ONLY IMMEDIATE )
Run Code Online (Sandbox Code Playgroud) 我在Visual Studio 2017中设置了一些生成后命令,这些命令应允许我运行System32(wsl.exe)当前拥有的程序。但是,Visual Studio没有看到该程序。
我试图设置命令以dir C:\Windows\System32\查看它可以列出的所有文件,实际上,它没有列出我所拥有的约4600个文件中的1000个文件,包括wsl.exe我要尝试的文件跑。在命令提示符下运行同一命令时,文件数正确显示。
我试图以whoamipost-build命令运行,它返回的用户与我在命令提示符下运行相同命令的用户相同。
我想念什么吗?
windows batch-file post-build-event visual-studio post-build
我有一个应用程序,应该在构建前和事件后的事件处理方面帮助我的项目.我正在使用ndesk.options进行命令行参数解析.当我的项目路径包含空格时,这给了我奇怪的结果.我认为这是ndesk.options的错,但我想我应该责备自己的应用程序.我把我的应用程序称为后建事件,如下所示:
build.exe --in="$(ProjectDir)" --out="c:\out\"
Run Code Online (Sandbox Code Playgroud)
args []的简单foreach显示以下内容:
--in=c:\my project" --out=c:\out"
Run Code Online (Sandbox Code Playgroud)
发生的事情是,每个参数中的最后一个被视为已被转义.因此删除了尾部反斜杠.整个事情被视为一个参数.
现在,我认为只是逃避第一个"我也很聪明",就像这样:
build.exe --in=\"$(ProjectDir)" --out=\"c:\out\"
Run Code Online (Sandbox Code Playgroud)
在这种情况下,结果args []看起来像这样:
--path="c:\my
project"
--out="c:\out"
Run Code Online (Sandbox Code Playgroud)
参数中的尾部反斜杠仍然被吞下,第一个参数现在被拆分.
将此args []传递给ndesk.options会产生错误的结果.
正确的命令行应如何显示,以便正确的元素以正确的args []插槽结束?或者,如果有或没有ndesk.options,如何解析这些命令行参数?任何建议都是受欢迎的.
提前致谢
在成功构建之后自动化源代码控制提交是一个好的策略吗?
编辑:我问,因为我想在版本之间进行更频繁的增量提交,这使得更容易找到引入错误的点,而不是在v1.0和v1.1之间回滚2K +新的代码行.
我将PowerShell脚本设置为在MSBuild完成后执行。它使用在构建过程的POSTBUILD部分(构建目录等)中设置的环境变量。当前看起来像这样:
set MAGE="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\mage.exe"
set APPFILE=$(TargetDir)$(TargetName).application
set MANIFEST=$(TargetPath).manifest
set CERT=$(ProjectDir)$(TargetName).pfx
set PROJECTNAME=$(TargetName)
set CONFIGURATION=$(ConfigurationName)
set TARGETDIR=$(TargetDir)
set TEAMBUILD=$False
Powershell -File "$(ProjectDir)POSTBUILD.ps1"
Run Code Online (Sandbox Code Playgroud)
每个集合都在单独的线上运行,但仍在同一CMD实例中。
有没有办法我可以只用一行而不是7来一次设置多个变量?
我需要在Buildroot编译之后和在创建 rootfs 之前找到一种方法来修改/编辑给定文件,具体取决于menuconfig标志选择。我可以在Buildroot文档中找到可以通过使用构建后脚本来做到这一点。
我的问题是,只有在menuconfig 中选择了某些内容时,我才会执行脚本操作,例如:
(x) Enable my_login_system;
Run Code Online (Sandbox Code Playgroud)
如果我选择my_login_system,那么我需要根据以下内容更改nsswitch.conf文件:
passwd: my_login files
Run Code Online (Sandbox Code Playgroud)
如果我没有在 menuconfig 中选择“my_login_system”,那么 nsswitch.conf 应该是:
passwd: files my_login
Run Code Online (Sandbox Code Playgroud)
所以,我的主要问题是如何知道在构建后脚本中是否选择了“my_login_system”。
我目前正在尝试在Visual Studio中创建一个后期构建脚本来清理我构建版本的目录.批处理文件执行正常,所有预期的行为都发生,但在Visual Studio中,我收到一条消息说"Call post-build.bat" exited with code 1.
我的批处理脚本如下:
@echo off
GOTO :CleanFiles
:CleanFiles
set direct = %CD%
IF EXIST *.pdb (
DEL *.pdb
)
IF EXIST *.vshost.exe.config (
DEL *.vshost.exe.config
)
IF EXIST *.WPF4.xml (
DEL *.WPF4.xml
)
IF EXIST System.Windows.Interactivity.xml (
DEL System.Windows.Interactivity.xml
)
IF ERRORLEVEL 0 GOTO MakeDirectories
:MakeDirectories
IF EXIST %direct%lib (
rmdir /s %direct%lib
rmdir /s %direct%config
rmdir /s %direct%output
)
mkdir %direct%lib
mkdir %direct%config
mkdir %direct%output
IF ERRORLEVEL 0 GOTO MoveFiles
:MoveFiles
move …Run Code Online (Sandbox Code Playgroud)