我有一个在我们所有项目文件中导入的常见msbuild文件。在这个公共文件中,我定义了一个目标并指定了它的输入(项目文件本身)和输出(从项目文件的内容生成的文件):
<Target Name="Generate"
Inputs="$(MSBuildProjectFile)"
Outputs="$(OutputPath)\$(AssemblyName).xyz">
<Exec Command="..."/>
</Target>
当我编译单个项目时,一切都适用于该项目:如果输出文件不存在则创建它。如果它存在且比项目文件更新,则目标不会运行。
我的问题是这个项目所依赖的项目即使它们各自的输出文件不存在也不会构建。
所以,如果我有项目
A,B和C
其中C取决于A和B.
现在想象A,B和C的输出是最新的,除了因为我刚刚添加了新目标而不存在的* .xyz文件。
如果我现在在VS中编译C只有项目C编译并且C.xyz被创建但不是A.xyz和B.xyz!
据我所知,如果该项目的至少一个目标输出缺失或过时,msbuild和VS必须将每个项目构建到当前项目中??
所以我的问题是:我的目标规范出了什么问题?