Search code examples
c#visual-studiomsbuildsolution

MSBuild copies dependent project files during _CopyOutOfDateSourceItemsToOutputDirectory


I have a C# project that uses the Project Dependencies in a sln file to make sure that the build order is correct.

So I have in my sln file that ProjectB depends on 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 has some content that is set to CopyIfNewer.

When I build this with Visual studio, ProjectA goes to its own bin folder and ProjectB goes to its own bin folder.

But when I build it with MSBuild, the content of ProjectA somehow appears in the output folder in ProjectB as well!

The build log shows that [ProjectB.csproj] _CopyOutOfDateSourceItemsToOutputDirectory copies the files over.

My question is: How can I tell MSBuild that the files do not belong to that project and don't have to be copied?

As a workaround I added ProjectA as a ProjectReference with <Private>False</Private> and that seems to work, but it is not my desired solution.


Solution

  • I think that the workaround you have described is currently the best solution you can find today.

    As a workaround I added ProjectA as a ProjectReference with False and that seems to work, but it is not my desired solution.