我想根据构建配置或服务配置启用或禁用启动任务。我希望实现的是我可以在我们的测试环境中禁用 New Relic,但为舞台和生产环境启用启动任务。那可能吗?
问问题
510 次
2 回答
3
NR_Jacob 的回答启发了我,谢谢!我发现您可以将角色设置传递给批处理文件。因此,您添加这样的设置: 并为每个单独的服务配置指定 true 或 false。
然后在 ServiceDefinition.csdef 中添加和行:
<Task commandLine="newrelic.cmd" executionContext="elevated" taskType="simple">
<Environment>
<Variable name="DisableNewRelic">
<RoleInstanceValue xpath="/RoleEnvironment/CurrentInstance/ConfigurationSettings/ConfigurationSetting[@name='DisableNewRelic']/@value" />
</Variable>
</Environment>
</Task>
并在 newrelic.cmd 的顶部添加这些行:
IF "%DisableNewRelic%" == "true" (
ECHO Found setting to disable New Relic, exiting... >> "%RoleRoot%\nr.log" 2>&1
EXIT /B 0
)
@NR_Jacob:您可以将 newrelic.cmd 的行添加到您的代码库中吗?在 cmd 中进行这样的设置并没有什么坏处;-) 否则,每次更新 nuget 包时,我都必须对 newrelic.cmd 进行修改。
于 2014-06-06T10:58:47.863 回答
1
Microsoft 的这篇文章为此类问题提供了很好的解决方案。总结一下:
将环境变量添加到 ServiceDefinition.csdef 文件,如下所示:
<Variable name="ComputeEmulatorRunning">
<RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
</Variable>
如果您在模拟器中运行,这会将变量设置为 true,否则设置为 false。接下来,您将需要更改 newrelic.cmd 文件以包装整个文件:
IF "%ComputeEmulatorRunning%" == "true" (
REM This task is running on the compute emulator. Nothing goes here since we want nothing to happen.
) ELSE (
REM This task is running on the cloud. Place the entirety of the newrelic.cmd file in here.
)
这仍然会调用 cmd 文件,但会阻止它在生产中执行任何操作。
于 2014-06-05T15:59:15.123 回答