【发布时间】:2016-03-07 22:19:31
【问题描述】:
我有一个 C# 项目,它使用 sln 文件中的项目依赖项来确保构建顺序正确。
所以我的 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>,这似乎可行,但这不是我想要的解决方案。
【问题讨论】:
-
在追查同样的问题时,它让我意识到即使该项目不是参考,它也被设置为依赖。它会按预期在 VS 中构建,但 msbuild 会引入 CopyIfNewer 文件。对我来说,依赖不是必需的,所以我删除了它。
标签: c# visual-studio msbuild solution