continuous-integration - 条件预生成事件命令

标签 continuous-integration visual-studio-2017 azure-devops pre-build-event

背景

目前,我在本地构建解决方案时运行预构建命令。但是,在我的 VSTS 持续集成服务器上构建时不需要此命令。

问题

有没有办法在本地机器上构建时只运行预构建事件命令?

我知道您可以添加如下条件语句。但是有什么东西可以区分它是本地构建还是 CI 构建?

if $(ConfigurationName) ==  Local 

最佳答案

使用 Visual Studio build 时VSTS 中的任务,您可以从任务配置中传递 MSBuild 参数。通过这种方式,您可以定义自己的自定义属性,如 RunsOnCI 并将其默认为 false。然后,您可以在构建定义中将其设置为 true

假设您在预构建事件中有以下代码:

if $(BuiltOnCI) == true (
    echo "Hello World!"
)

然后您需要编辑您的 .csproj 文件并添加具有默认值的 BuiltOnCI 属性:

<PropertyGroup>
    ...
    <BuiltOnCI>false</BuiltOnCI>
</PropertyGroup>

您可以通过在命令行上运行 MSBuild 来测试您的更改。像这样运行它不会显示 Hello World 消息:

msbuild myproject.csproj

在命令行上传递参数允许您将其设置为 true:

msbuild StackoverflowSample.csproj /p:BuiltOnCi=true

现在它可以在本地运行,您可以使用 /p:BuiltOnCi=true 并将您的 VSTS 任务放入 MSBuild 参数字段中。

关于continuous-integration - 条件预生成事件命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48380492/

相关文章:

python - 如何使用 Travis CI 测试 Pl/Python PostgreSQL 程序?

.net - 在 Visual Studio 2017 中使用 Windows 窗体应用程序?

c# - DotNetCore3.0 WPF - 错误 - 项目文件不完整。缺少预期进口

c# - 使用 .net Framework 4.6.1 而不是项目框架 .netstandard 版本 2 恢复包 Microsoft.Net.Http - Xamarin Form

linux - Azure 开发运营 : What's the difference between the "Hosted Linux Preview" and "Hosted Ubuntu 1604" agent pools?

azure-devops - 如何重命名状态

c# - 如何从 csproj 在 nuspec 中生成依赖项(或 nupkg 在其元数据中包含依赖项)

Jenkins CI : should I have a server for Jenkins and a dedicated slave for building?

azure-devops - 如何解决尝试在 Windows Server 2019 上的 Visual Studio 2022 上构建 Azure DevOps 代码时显示的以下错误

go - 使用 go run code.go 执行 Go 程序以供实际使用是最佳实践吗?