Visual Studio 插件生成 Visual Studio IDE 所使用的文件,从而可以在 Visual Studio 中打开解决方案(文件 - 打开 - 项目/解决方案…)。
visual-studio 插件具体生成什么取决于所使用的其他插件
| 插件 | 描述 | 
|---|---|
| 无 | 生成最小解决方案文件。 | 
| 将代表 C++ 应用程序的项目添加到解决方案文件。 | |
| 为每个指定的链接添加一个代表共享和/或静态库的项目到解决方案文件。 | 
用法
plugins {
    `visual-studio`
}plugins {
    id 'visual-studio'
}Visual Studio 插件会为您的项目添加许多任务。您将使用的主要任务是 visualStudio、cleanVisualStudio 和 openVisualStudio 任务。
任务
下图显示了此插件添加的任务之间的关系。
 
IDE 工作区任务
- projectNameVisualStudioSolution- GenerateSolutionFileTask
- 
生成 .sln文件。此任务仅在根项目中可用。
IDE 项目任务
C++ 应用程序插件任务
- projectNameVisualStudioProject— GenerateProjectFileTask
- 
为应用程序组件生成 .vcxproj文件。
- projectNameVisualStudioFilters— GenerateFiltersFileTask
- 
为应用程序组件生成 .vcxproj.filters文件。
- mainVisualStudio- 任务 (生命周期)
- 
依赖于: projectNameVisualStudioProject和projectNameVisualStudioFilters为应用程序组件生成所有 Visual Studio 项目文件。 
C++ 库插件任务
- projectNameDllVisualStudioProject— GenerateProjectFileTask
- 
为 main组件的共享链接生成.vcxproj文件。
- projectNameDllVisualStudioFilters— GenerateFiltersFileTask
- 
为 main组件的共享链接生成.vcxproj.filters文件。
- projectNameLibVisualStudioProject— GenerateProjectFileTask
- 
为 main组件的静态链接生成.vcxproj文件。
- projectNameLibVisualStudioFilters— GenerateFiltersFileTask
- 
为 main组件的静态链接生成.vcxproj.filters文件。
- mainVisualStudio- 任务 (生命周期)
- 
依赖于: projectNameDllVisualStudioProject(用于共享链接)、projectNameDllVisualStudioFilters(用于共享链接)、projectNameLibVisualStudioProject(用于静态链接) 和projectNameLibVisualStudioFilters(用于静态链接)为库组件生成所有 Visual Studio 项目文件。 
配置
Visual Studio 插件允许对生成的文件进行一些自定义。以下部分显示了自定义项。
更改解决方案生成文件的位置
生成的解决方案的位置可以在根项目中配置
visualStudio {
    solution {
        solutionFile.setLocation(file("solution.sln"))
    }
}visualStudio {
    solution {
        solutionFile.location = file('solution.sln')
    }
}更改项目生成文件的位置
生成的项目文件的位置可以在任何项目中配置
visualStudio {
    projects.all {
        projectFile.setLocation(file("project.vcxproj"))
        filtersFile.setLocation(file("project.vcxproj.filters"))
    }
}visualStudio {
    projects.all {
        projectFile.location = file('project.vcxproj')
        filtersFile.location = file('project.vcxproj.filters')
    }
}