使用MSBuild获取解决方案中的项目列表

时间:2018-03-28 15:57:44

标签: visual-studio msbuild

我有一个包含许多C ++项目(.vcxproj)的Visual Studio解决方案。有一个具有自定义构建步骤的实用程序项目。在此构建步骤中,我想获得解决方案中的项目列表,并将其传递给外部工具。有没有办法有这样的清单?像$(ProjectsInSolution)

这样的东西

另见https://social.msdn.microsoft.com/Forums/vstudio/en-US/51254ee1-abaf-496a-89f9-cf87fc2ae1e8/list-project-from-solution-sln-file?forum=msbuild

1 个答案:

答案 0 :(得分:1)

  

使用MSBuild获取解决方案中的项目列表

您可以使用MSBuild Community TasksGetSolutionProjects来解决此问题。

要完成此任务,请在该解决方案中创建一个新项目,例如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>

构建此项目时,您将获得解决方案中的所有项目路径:

enter image description here

希望这有帮助。