Visual Studio 插件生成 Visual Studio IDE 所使用的文件,从而可以在 Visual Studio 中打开解决方案(文件 - 打开 - 项目/解决方案…​)。

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')
    }
}