- 通过命令行或Visual C# 2008 Express启动Solution B的构建。这对于两者都非常重要!
- 让Project C触发Project A的构建。
- 将Project A的输出 (一个类库) 复制到Project C。
- 构建Project C和Solution B中的其他项目。
MSBuild 3.5 或 VS2008->
[Solution B (3.5)]->
[Project C (3.5)]->
[Project A (2.0)]->
将A的输出复制到C->
继续构建解决方案B
你有任何想法如何设置它吗?非常感谢提供工作项目文件的片段!提前致谢! 解决方案
以下是需要添加到项目C中的内容,以使其正常运行:
<ItemGroup>
<ProjectToBuild Include="..\ProjectA\ProjectA.csproj" />
</ItemGroup>
<Target Name="BeforeBuild">
<MSBuild
Projects="@(ProjectToBuild)"
Targets="Rebuild" ToolsVersion="2.0">
<Output
TaskParameter="TargetOutputs"
ItemName="AssembliesBuiltByChildProjects" />
</MSBuild>
<Copy SourceFiles="@(AssembliesBuiltByChildProjects)"
DestinationFolder="$(MSBuildProjectDirectory)"
/>
</Target>
注意,使用MSBuild任务获取解决方案的TargetOutputs存在已知问题。虽然这个问题应该在MSBuild 3.5中得到修复,但我猜测ToolsVersion属性导致它重新出现。这就是为什么我直接引用ProjectA.csproj而不是它的解决方案文件的原因。