diff --git a/xmake/modules/package/tools/msbuild.lua b/xmake/modules/package/tools/msbuild.lua index c46e76479ee..4201e8c0e26 100644 --- a/xmake/modules/package/tools/msbuild.lua +++ b/xmake/modules/package/tools/msbuild.lua @@ -20,10 +20,12 @@ -- imports import("core.base.option") +import("core.project.config") import("core.project.project") import("core.tool.toolchain") import("lib.detect.find_tool") import("private.utils.upgrade_vsproj") +import("private.utils.toolchain", {alias = "toolchain_utils"}) -- get the number of parallel jobs function _get_parallel_njobs(opt) @@ -65,6 +67,12 @@ function _get_configs(package, configs, opt) if not configs_str:find("p:Platform=", 1, true) then table.insert(configs, "-p:Platform=" .. _get_vsarch(package)) end + if not configs_str:find("p:PlatformToolset=", 1, true) then + local vs_toolset = toolchain_utils.get_vs_toolset_ver(_get_msvc(package):config("vs_toolset") or config.get("vs_toolset")) + if vs_toolset then + table.insert(configs, "/p:PlatformToolset=" .. vs_toolset) + end + end if project.policy("package.msbuild.multi_tool_task") or package:policy("package.msbuild.multi_tool_task") then table.insert(configs, "/p:UseMultiToolTask=true") table.insert(configs, "/p:EnforceProcessCountAcrossBuilds=true")