c# – MSBuild在_CopyOutOfDateSourceItemsToOutputDirectory期间复制相关的项目文件

前端之家收集整理的这篇文章主要介绍了c# – MSBuild在_CopyOutOfDateSourceItemsToOutputDirectory期间复制相关的项目文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个C#项目,它使用sln文件中的Project Dependencies来确保构建顺序正确.

所以我在我的sln文件中,ProjectB依赖于ProjectA.

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectB","ProjectB.csproj","{E24EAC46-1563-4E73-9411-3F9D2645F77C}"
    ProjectSection(ProjectDependencies) = postProject
        {4A7D6720-4AA1-4F0B-A796-A0436DB3D7D7} = {4A7D6720-4AA1-4F0B-A796-A0436DB3D7D7}
    EndProjectSection
EndProject

ProjectA有一些设置为CopyIfNewer的内容.

当我使用Visual Studio构建它时,ProjectA转到它自己的bin文件夹,ProjectB转到它自己的bin文件夹.

但是当我使用MSBuild构建它时,ProjectA的内容也会以某种方式出现在ProjectB的输出文件夹中!

构建日志显示[ProjectB.csproj] _CopyOutOfDateSourceItemsToOutputDirectory复制文件.

我的问题是:我如何告诉MSBuild文件不属于该项目而不必复制?

作为一种解决方法,我将ProjectA添加为ProjectReference,其中< Private> False< / Private>这似乎有效,但这不是我想要的解决方案.

解决方法

解决了在ProjectB .csproj文件中覆盖MSBuild任务的麻烦.
(我只在.sln文件中依赖ProjectA,而不是将项目作为ProjectReference添加到ProjectB)

将此目标添加到.csproj文件中:

<Project>
.....
<Target Name="_CopyOutOfDateSourceItemsToOutputDirectory" Condition=" '@(_SourceItemsToCopyToOutputDirectory)' != '' " Inputs="@(_SourceItemsToCopyToOutputDirectory)" Outputs="@(_SourceItemsToCopyToOutputDirectory->'$(OutDir)%(TargetPath)')">
        <Message Importance="Normal" Text="$(MSBuildProjectName) Skip copy _CopyOutOfDateSourceItemsToOutputDirectory" />
      </Target>
      <Target Name="_CopyOutOfDateSourceItemsToOutputDirectoryAlways" Condition=" '@(_SourceItemsToCopyToOutputDirectoryAlways)' != '' ">
        <Message Importance="Normal" Text="$(MSBuildProjectName) Skip copy _CopyOutOfDateSourceItemsToOutputDirectoryAlways" />
      </Target>
</Project>

对于我自己的文件,需要复制到输出目录我是通过postbuild中的XCOPY来做的,如:

<PropertyGroup>
    <PostBuildEvent>xcopy "$(ProjectDir)SomeSubFolder\SomeContentFile.cfs" "$(TargetDir)SomeSubFolder\" /Y /F</PostBuildEvent>
  </PropertyGroup>

也许有超越_CopyOutOfDateSourceItemsToOutputDirectory *任务like this的智能变体.但我的变体现在让我满意.因为我的项目中没有其他内容文件的依赖项.

猜你在找的C#相关文章