Skip to content

Commit 40ced1a

Browse files
committed
improve get default target framework
1 parent ce2f02d commit 40ced1a

File tree

2 files changed

+11
-31
lines changed

2 files changed

+11
-31
lines changed

xmake/rules/csharp/modules/csproj_properties.lua

Lines changed: 8 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -36,40 +36,17 @@ function _get_target_value(target, name)
3636
return _first(target:values(name))
3737
end
3838

39-
-- detect default target framework from dotnet sdk version, e.g. "net8.0"
39+
-- get default target framework from dotnet toolchain sdk version, e.g. "net8.0"
4040
function _get_default_target_framework(context)
41-
local dotnet = _first(context.target:get("toolset.cs")) or "dotnet"
42-
dotnet = tostring(dotnet)
43-
_g.default_target_frameworks = _g.default_target_frameworks or {}
44-
local cached = _g.default_target_frameworks[dotnet]
45-
if cached ~= nil then
46-
return cached
47-
end
48-
49-
local major = nil
50-
local sdks = try { function ()
51-
return os.iorunv(dotnet, {"--list-sdks"})
52-
end }
53-
if sdks then
54-
for line in sdks:gmatch("[^\r\n]+") do
55-
local line_major = tonumber(line:match("^%s*(%d+)%.%d+%.%d+"))
56-
if line_major and (not major or line_major > major) then
57-
major = line_major
58-
end
41+
local major
42+
local toolchain = context.target:toolchain("dotnet")
43+
if toolchain then
44+
local sdkver = toolchain:config("sdkver")
45+
if sdkver then
46+
major = tonumber(tostring(sdkver):match("^(%d+)"))
5947
end
6048
end
61-
if not major then
62-
local version = try { function ()
63-
return os.iorunv(dotnet, {"--version"})
64-
end }
65-
if version then
66-
major = tonumber(version:match("^%s*(%d+)"))
67-
end
68-
end
69-
70-
local target_framework = major and ("net" .. tostring(major) .. ".0") or "net8.0"
71-
_g.default_target_frameworks[dotnet] = target_framework
72-
return target_framework
49+
return "net" .. tostring(major or 8) .. ".0"
7350
end
7451

7552
-- resolve target framework from user config or auto-detect from dotnet sdk

xmake/toolchains/dotnet/xmake.lua

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ toolchain("dotnet")
5050
end
5151
toolchain:config_set("bindir", sdkinfo.bindir)
5252
toolchain:config_set("sdkdir", sdkinfo.sdkdir)
53+
if sdkinfo.sdkver then
54+
toolchain:config_set("sdkver", sdkinfo.sdkver)
55+
end
5356
return true
5457
end)
5558

0 commit comments

Comments
 (0)