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的智能变体.但我的变体现在让我满意.因为我的项目中没有其他内容文件的依赖项.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...