我有一个包含许多C ++项目(.vcxproj)的Visual Studio解决方案。有一个具有自定义构建步骤的实用程序项目。在此构建步骤中,我想获得解决方案中的项目列表,并将其传递给外部工具。有没有办法有这样的清单?像$(ProjectsInSolution)
?
答案 0 :(得分:1)
使用MSBuild获取解决方案中的项目列表
您可以使用MSBuild Community Tasks的GetSolutionProjects来解决此问题。
要完成此任务,请在该解决方案中创建一个新项目,例如GetProjectsPath
。您应该将MSBuildTasks添加到测试项目中。之后,您将在项目文件中找到以下脚本(如果没有,请手动添加):
<Import Project="..\packages\MSBuildTasks.1.5.0.235\build\MSBuildTasks.targets" Condition="Exists('..\packages\MSBuildTasks.1.5.0.235\build\MSBuildTasks.targets')" />
然后卸载您的项目。然后在项目的最后,就在结束标记</Project>
之前,放在脚本下面:
<Target Name="GetProjectsPath" AfterTargets="Build">
<GetSolutionProjects Solution="..\GetProjectsPath.sln">
<Output ItemName="ProjectFiles" TaskParameter="Output" />
</GetSolutionProjects>
<Message Text="Get Projects Path in the solution!" />
<Message Text="Relative project paths:" />
<Message Text="%(ProjectFiles.ProjectPath)" />
<Message Text="Full paths to project files:" />
<Message Text="%(ProjectFiles.FullPath)" />
</Target>
构建此项目时,您将获得解决方案中的所有项目路径:
希望这有帮助。