MSBuild:如何在使用项目依赖项时保留其他文件

本文关键字:依赖 保留 文件 其他 项目 MSBuild | 更新日期: 2023-09-27 18:33:14

我有 2 个 C# 项目,A 和 B。在 A 的 csproj 文件中,它将使用复制任务将文件 C 复制到目标文件夹

然后,项目 B 使用 B 的 csproj 文件中的<ProjectReference>引用项目 A。

现在的问题是,在构建项目 B 时,目标文件夹中不会有 C,知道吗?

MSBuild:如何在使用项目依赖项时保留其他文件

您能否将要复制的文件添加为内容项,并将CopyToOutputDirectory标签设置为Always,而不是在项目 A 中使用Copy任务,如下所示:

  <ItemGroup>
    <Content Include="SomeFile.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
  </ItemGroup>

(这也可以通过在Visual Studio的GUI中通过在文件属性中将"复制到输出目录"设置为"始终复制")来完成)

然后,当项目 B 引用项目 A 时,这应该会按照您想要的方式运行,文件 C (SomeFile.txt) 将同时出现在项目 B 和项目 A 的输出目录中。

我已经在Visual Studio 2013上对此进行了测试,并且按预期工作。请注意 CopyToOutputDirectory 的限制,但它将尝试重新创建存储在输出目录中的文件夹结构,这并不总是可取的。