在 FAKE MSBuild 任务中定义预处理器符号

Defining preprocessor symbols in a FAKE MSBuild task

有没有办法在 FAKE 的 MSBuild 任务中定义预处理器符号?

例如,如果我的代码中有这样的内容:

#if LOCAL
private static string databaseUrl = "http://localhost/myDbFile.sqlite";
#else
private static string databaseUrl = "http://www.website.com/myPublicDbFile.sqlite";
#endif

然后我想在构建时在我的 F# 构建脚本中定义符号 LOCAL

感谢 Ron Beyer(查看评论)为我指明了正确的方向。答案确实是使用 DefineConstants 项目 属性。在典型的 FAKE MSBuild 任务中,它看起来像这样:

// Build a special version with the "SPECIAL" directive defined.
MSBuild
    null 
    "publish" 
    ([
        ("Configuration", "Release"); 
        ("Verbosity", "minimal");
        ("ProductName", "My Project (Special)");
        ("InstallUrl", "http://www.example.com/software/MyProjectSpecial/");
        ("DefineConstants", "SPECIAL")
    ])
    ["../MyProject/MyProject/MyProject.csproj"] 
        |> ignore