Visual Studio 插件生成由 Visual Studio IDE 使用的文件,从而可以在 Visual Studio 中打开解决方案(File - Open - Project/Solution…​)。

visual-studio 插件具体生成什么取决于使用了哪些其他插件

表 1. Visual Studio 插件行为
插件 描述

生成最小解决方案文件。

C++ 应用

将一个代表 C++ 应用的项目添加到解决方案文件。

C++ 库

为每个指定的链接类型添加一个项目,代表共享库和/或静态库到解决方案文件。

用法

build.gradle.kts
plugins {
    `visual-studio`
}
build.gradle
plugins {
    id 'visual-studio'
}

Visual Studio 插件为你的项目添加了许多任务。你将使用的主要任务是 visualStudiocleanVisualStudioopenVisualStudio 任务。

任务

下图展示了此插件添加的任务之间的关系。

visual studio task graph
图 1. Visual Studio 插件默认任务图

生命周期任务

visualStudio任务

依赖于projectNameVisualStudioSolution 以及所有 Visual Studio 项目文件生成任务

生成所有 Visual Studio 配置文件。

cleanVisualStudio删除

依赖于:所有 Visual Studio 项目和解决方案文件清理任务

移除所有 Visual Studio 配置文件。

openVisualStudio - 任务 (生命周期)

依赖于visualStudio

在 IDE 中打开 Visual Studio 解决方案。

IDE 工作空间任务

projectNameVisualStudioSolution - GenerateSolutionFileTask

生成 .sln 文件。此任务仅在根项目上可用。

IDE 项目任务

C++ 应用插件任务

projectNameVisualStudioProjectGenerateProjectFileTask

生成应用组件的 .vcxproj 文件。

projectNameVisualStudioFiltersGenerateFiltersFileTask

生成应用组件的 .vcxproj.filters 文件。

mainVisualStudio - 任务 (生命周期)

依赖于projectNameVisualStudioProjectprojectNameVisualStudioFilters

生成应用组件的所有 Visual Studio 项目文件。

C++ 库插件任务

projectNameDllVisualStudioProjectGenerateProjectFileTask

生成 main 组件共享链接的 .vcxproj 文件。

projectNameDllVisualStudioFiltersGenerateFiltersFileTask

生成 main 组件共享链接的 .vcxproj.filters 文件。

projectNameLibVisualStudioProjectGenerateProjectFileTask

生成 main 组件静态链接的 .vcxproj 文件。

projectNameLibVisualStudioFiltersGenerateFiltersFileTask

生成 main 组件静态链接的 .vcxproj.filters 文件。

mainVisualStudio - 任务 (生命周期)

依赖于projectNameDllVisualStudioProject(用于共享链接)、projectNameDllVisualStudioFilters(用于共享链接)、projectNameLibVisualStudioProject(用于静态链接)和 projectNameLibVisualStudioFilters(用于静态链接)

生成库组件的所有 Visual Studio 项目文件。

配置

Visual Studio 插件允许对生成的文件进行一些自定义。以下章节展示了如何自定义。

更改解决方案生成文件位置

可以在根项目上配置生成解决方案的位置

build.gradle.kts
visualStudio {
    solution {
        solutionFile.setLocation(file("solution.sln"))
    }
}
build.gradle
visualStudio {
    solution {
        solutionFile.location = file('solution.sln')
    }
}

更改项目生成文件位置

可以在任何项目上配置生成项目文件的位置

build.gradle.kts
visualStudio {
    projects.all {
        projectFile.setLocation(file("project.vcxproj"))
        filtersFile.setLocation(file("project.vcxproj.filters"))
    }
}
build.gradle
visualStudio {
    projects.all {
        projectFile.location = file('project.vcxproj')
        filtersFile.location = file('project.vcxproj.filters')
    }
}