我正在寻找一种解决方案,当我执行"构建解决方案"(Ctrl + F6)时调用我的FAKE构建脚本.奖励指向指定默认目标以外的目标的方式.
我刚刚在F#中编译这段代码时遇到了框架版本之间行为的变化:
let test = Lazy.CreateFromValue 1
Run Code Online (Sandbox Code Playgroud)
针对.NET framework 2.0编译,表达式导致"已创建"的Lazy对象,即:
test.IsValueCreated = true
Run Code Online (Sandbox Code Playgroud)
在针对.NET framework 4.0编译时,表达式会产生一个"未评估"的惰性对象,即:
test.IsValueCreated = false
Run Code Online (Sandbox Code Playgroud)
只有在后一种情况下访问test.Value之后,两者才是等价的.
我无法在任何地方找到任何关于这种变化的参考,因此我的问题是为什么这种变化表现不同以及变化背后的原因是什么(它正在破裂).在我看来,.NET 2.0中的行为更有意义 - 从具体值创建一个Lazy对象应该导致"已经评估"的惰性对象.
我有一个使用 Windows Nano Server 基础映像并使用 Powershell 作为 shell 的 Dockerfile:
FROM microsoft/nanoserver
SHELL ["powershell"]
Run Code Online (Sandbox Code Playgroud)
我现在想使用命令定义一个变量(或通过 via 传递它--build-arg
)ARG
,然后在RUN
命令中使用它,但我似乎无法让它工作。我试过了:
ARG mydir=tmp
RUN mkdir %mydir%
RUN mkdir $mydir
Run Code Online (Sandbox Code Playgroud)
但这些都不起作用。
如何告诉 docker / powershell 正确扩展我的变量?