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

Setting Solution Filename on OutDir

我有一个文件集,它是对源代码树中所有 *.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: "

我认为您无法以任何 "automatic" 方式执行此操作,但由于 FAKE 允许您编写任意 F# 代码,因此您可以遍历项目并 运行 MSBuild 对单个项目进行迭代。

像这样应该可以解决问题(您可能需要打开 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: "