CAKE中的load指令可以用于可选文件吗?

7
在一个cake脚本中,当使用load指令(#load)时,是否可以选择性地进行操作?如果引用的文件不存在,我不希望CAKE脚本返回异常。 文档引用了使用"?"来尝试加载,但是即使这样,如果文件不存在,我仍然会得到异常。
#load "local:?path=properties.cake";

但是在执行时出现错误:

Analyzing build script...
Error: Could not find script 'C:/projects/my-project/properties.cake'.

CAKE脚本在许多项目中都很常见,但只有一些项目会有额外的文件,因此才会出现这个问题。谢谢。
3个回答

5
目前还没有一种可选地加载脚本的方式,但是请随意在https://github.com/cake-build/cake上创建一个问题来解决这个问题。 ?并不表示尝试加载,它只是一个查询字符串分隔符。 #load预处理器值是一个URI,可选择回退到路径以向后兼容旧版本的Cake。

0

自Cake版本0.38.5起至少支持此功能。如果正在加载的.cake文件不存在,#load指令只会显示警告。

Screenshot of Cake displaying a warning when the file does not exist


0

你可以通过在 build.ps1 脚本中提供一个空白/默认的 properties.cake 来解决这个问题,就像这样。

if (!(Test-Path "properties.cake")) {
    Write-Host "First run! Generating properties.cake..."
    Copy-Item "properties.cake.default" -Destination ".\properties.cake"
}

# Build Cake arguments
$cakeArguments = @("$Script");
(...)

然后你需要提交一个 properties.cake.default 文件,以及你的 cake 脚本!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接