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