【问题标题】:Configure MSBuild output path配置 MSBuild 输出路径
【发布时间】:2013-10-28 11:25:52
【问题描述】:

有一个 Windows Forms (NET 3.5) 项目 foo.csproj,其中包含本地化的资源文件。我使用 MSBuild 构建项目并创建部署结构:

<MSBuild Projects="foo.csproj" Properties="Configuration=Release;OutputPath=..\deploy\foo" Targets="Build" />

它将 foo.exe 和所有本地化的 DLL 文件复制到 deploy\foo 文件夹,但我需要将本地化的 DLL 文件复制到单独的文件夹中。应该是:

  • 部署\foo\foo.exe
  • 部署\locales\ru-RU\foo.resources.dll
  • 部署\locales\pt-BR\foo.resources.dll

有没有办法配置 MSBuild 将 EXE 和 DLL 文件复制到不同的文件夹?

【问题讨论】:

  • 如果您谈到 resx 文件,它们应该在GenerateSatelliteAssembliesCopyFilesToOutputDirectory 期间生成并复制到与区域性名称对应的子文件夹中。你是怎么命名你的资源文件的?
  • 是的,我的意思是 resx 文件。我将 Res.resx、Res.ru-RU.resx 等文件添加到项目中,msbuild 在输出文件夹中创建这些子文件夹 - 它创建 foo.exe 文件的位置相同。但我需要将这些子文件夹复制到单独的位置 - deploy\locales

标签: msbuild


【解决方案1】:

使用 MSBuild 命令行,您可以指定输出路径,如下所示:

C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe <path_to_project_file> /t:Build /p:OutDir=c:\custom_build_out\;Configuration=PRODUCTION;Platform=x64

注意:

  1. 如果更改为/p 指定OutDir 属性的顺序,这将不起作用。
  2. OutDir 属性用于指定备用目录的完整路径。 OutputPath 是相对目录。
  3. 它必须在自定义构建输出路径中有一个项目名称 + 构建配置名称,因为 MSBuild 不会将这些内容附加到 OutDir

【讨论】:

  • 这太完美了!我不得不改变订单,就是这样,畅通无阻! ^_^
  • 这不适用于我的 ToolsVersion="14.0",MSBuild 无法找到引用。我正在使用 powershell 手动复制。
  • 嗨,你能检查一下这个问题吗stackoverflow.com/questions/61661254/…
【解决方案2】:

资源文件的生成和复制在构建期间的内部 MSBuild 进程中完成:GenerateSatelliteAssembliesCopyFilesToOutputDirectory。它们被复制到输出目录中。

据我所知,您无法修改此行为。

您必须在构建步骤之后移动资源文件。我建议使用来自MSBuild community tasksMove 任务。

<MSBuild Projects="foo.csproj" Properties="Configuration=Release;OutputPath=..\deploy\foo" Targets="Build" />

<CreateItem Include="..\deploy\foo\**\*.resources.dll">
    <Output TaskParameter="Include" ItemName="ResourcesToMove" />
</CreateItem>

<Move SourceFiles="@(ResourcesToMove)" DestinationFiles="@(ResourcesToMove->'..\deploy\locales\%(RecursiveDir)\%(Filename)%(Extension)')"/>

【讨论】:

  • 谢谢,我想这是一个解决方案。我现在将尝试 msbuild 社区任务。
  • 这个答案对你来说可能有点矫枉过正。考虑先尝试 Jerome 的答案,这样可能会节省一些时间。
  • 这个anwser是关于将一些输出文件复制到不同的文件夹中(在这种情况下是编译的resx)。使用命令行修改构建的整个输出路径并不能回答特定问题,即使它涵盖了问题标题“配置 msbuild 输出路径” - 这可以通过多种方式完成。
猜你喜欢
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2017-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多