summaryrefslogtreecommitdiff
path: root/xmake/rules/csharp/load.lua
diff options
context:
space:
mode:
Diffstat (limited to 'xmake/rules/csharp/load.lua')
-rw-r--r--xmake/rules/csharp/load.lua21
1 files changed, 16 insertions, 5 deletions
diff --git a/xmake/rules/csharp/load.lua b/xmake/rules/csharp/load.lua
index 0811cf8d0..14b53a1fa 100644
--- a/xmake/rules/csharp/load.lua
+++ b/xmake/rules/csharp/load.lua
@@ -18,6 +18,8 @@
-- @file load.lua
--
+import("modules.csharp_common", {rootdir = os.scriptdir(), alias = "csharp_common"})
+
function main(target)
local targetdir = target:targetdir()
if targetdir and path.filename(targetdir) ~= target:name() then
@@ -40,12 +42,21 @@ function main(target)
table.insert(csprojfiles, sourcefile)
end
end
- assert(#csprojfiles > 0, "target(%s): csharp requires one .csproj in add_files()!", target:name())
- assert(#csprojfiles == 1, "target(%s): csharp only supports one .csproj file!", target:name())
+ assert(#csprojfiles <= 1, "target(%s): csharp only supports one .csproj file!", target:name())
- local csprojfile = csprojfiles[1]
- local csprojabs = path.is_absolute(csprojfile) and csprojfile or path.absolute(csprojfile, os.projectdir())
- assert(os.isfile(csprojabs), "target(%s): csharp .csproj not found: %s", target:name(), csprojfile)
+ local csprojabs = nil
+ if #csprojfiles == 1 then
+ local csprojfile = csprojfiles[1]
+ local csprojpath = path.is_absolute(csprojfile) and csprojfile or path.absolute(csprojfile, os.projectdir())
+ if os.isfile(csprojpath) then
+ csprojabs = csprojpath
+ end
+ end
+
+ if not csprojabs then
+ csprojabs = csharp_common.find_or_generate_csproj(target, {skip_deps = true})
+ end
+ assert(csprojabs, "target(%s): csharp failed to resolve or generate .csproj file!", target:name())
if not target:get("filename") and not target:get("basename") then
target:set("basename", path.basename(csprojabs))