Visual Studio 插件与 配置缓存 不兼容。

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 - Task (生命周期)

依赖于: projectNameVisualStudioProjectprojectNameVisualStudioFilters

为应用程序组件生成所有 Visual Studio 项目文件。

C++ 库插件任务

projectNameDllVisualStudioProjectGenerateProjectFileTask

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

projectNameDllVisualStudioFiltersGenerateFiltersFileTask

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

projectNameLibVisualStudioProjectGenerateProjectFileTask

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

projectNameLibVisualStudioFiltersGenerateFiltersFileTask

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

mainVisualStudio - Task (生命周期)

依赖于: 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')
    }
}