F# 在OutDir上设置解决方案文件名

F# 在OutDir上设置解决方案文件名,f#,f#-fake,F#,F# Fake,我有一个文件集,它是对源代码树中所有*.sln文件的扫描。目前有4个文件夹 使用masterParam,我传入GenerateProjectSpecificOutputFolder并设置outdir 我要做的是让使用MSBuild构建的每个sln将解决方案名称作为outDir的一部分追加 我用的是F#FAKE 下面是来自目标构建的 let masterParam = [ ("Configuration",buildMode); ("GenerateProjectSpecificOutpu

我有一个文件集,它是对源代码树中所有*.sln文件的扫描。目前有4个文件夹

使用masterParam,我传入GenerateProjectSpecificOutputFolder并设置outdir

我要做的是让使用MSBuild构建的每个sln将解决方案名称作为outDir的一部分追加

我用的是F#FAKE

下面是来自目标构建的

let masterParam = [
  ("Configuration",buildMode);
  ("GenerateProjectSpecificOutputFolder","true");
  ("OutDir",("drop/<solutionName>");
  ("BuildInParallel", "false");
]

// compile all projects below src/app/
MSBuild buildDir "Build" masterParam appReferences
  |> Log "Build-Output: "
let masterParam=[
(“配置”,构建模式);
(“GenerateProjectSpecificOutputFolder”,“true”);
(“OutDir”(“drop/”);
(“BuildInParallel”、“false”);
]
//编译src/app下面的所有项目/
MSBuild buildDir“Build”主参数参考
|>日志“生成输出:”

我认为您无法以任何“自动”方式完成此操作,但由于FAKE允许您编写任意F#代码,因此您可以迭代项目并在单个项目上运行MSBuild

类似这样的操作应该可以做到(您可能需要打开
System.IO
):


这是正确的解决方案。您还需要指定Open System.IO
for proj in appReferences do
  let name = Path.GetFileNameWithoutExtension(proj)
  let masterParam = [
    ("Configuration",buildMode);
    ("GenerateProjectSpecificOutputFolder","true");
    ("OutDir",("drop/" + name);
    ("BuildInParallel", "false");
  ]

  MSBuild buildDir "Build" masterParam [proj]
  |> Log "Build-Output: "