FAKE使用不安全标志构建项目

时间:2014-09-10 16:09:04

标签: f#-fake

我正在尝试构建一个解决方案,其中一个项目需要使用unsafe标志构建,它在项目中正确设置但是在构建时我收到错误:

  

"只有使用/ unsafe"

进行编译时才会出现不安全的代码

这是我目前的目标     目标" CompileApp" (有趣_ - >         ! @" ***的csproj"           |> MSBuildRelease buildDir" Build"           |>记录" AppBuild-Output:"     )

我尝试添加MsBuildParams但不确定如何使用它们(即似乎在MsBuildRelease中没有选项可以添加类似的内容

let setParams defaults =
    { defaults with
        Verbosity = Some(Quiet)
        Targets = ["Build"]
        Properties =
            [
                "AllowUnsafeBlocks", "True"
                "Configuration", "Release"
            ]
    }

这里最好的选择是为具有安全和不安全代码的项目创建两个不同的目标,那会有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

我发现AllowUnsafeBlocks=true元素仅在我的项目文件中的DEBUG|AnyCPURelease|AnyCPU PropertyGroups下定义。

使用它为我修复了它:

Target "BuildApp" (fun _ ->
    !! ".\**\MyApp.*.csproj"
    |> MSBuild buildDir "Build" ["Configuration", "Release"; "Platform", "AnyCPU"]
    |> Log "AppBuild-Output: "
)

希望这有帮助。

答案 1 :(得分:0)

好的我认为这可能就是这样:

Target "CompileUnsafe" (fun _ ->          
    let buildMode = getBuildParamOrDefault "buildMode" "Release"
    let setParams defaults =
        { defaults with
            Verbosity = Some(Quiet)
            Targets = ["Build"]
            Properties =
                [
                    "Optimize", "True"
                    "DebugSymbols", "True"
                    "Configuration", buildMode
                    "AllowUnsafeBlocks", "True"
                ]
        }
    build setParams "./ProjectPlugins.sln"      
)

如果有更好的解决方案我会全力以赴(解决方案就在文档中,而我只是错过了它)