diff --git a/Source/Editor/Cooker/CookingData.h b/Source/Editor/Cooker/CookingData.h
index 88b23d6bc..ddc02fa67 100644
--- a/Source/Editor/Cooker/CookingData.h
+++ b/Source/Editor/Cooker/CookingData.h
@@ -193,6 +193,11 @@ enum class DotNetAOTModes
/// Use Mono AOT to cross-compile all used C# assemblies into native platform static libraries which can be linked into a single shared library.
///
MonoAOTStatic,
+
+ ///
+ /// Target platform doesn't support .NET or it has been disabled.
+ ///
+ NoDotnet,
};
extern FLAXENGINE_API const Char* ToString(const BuildPlatform platform);
diff --git a/Source/Editor/Cooker/GameCooker.cpp b/Source/Editor/Cooker/GameCooker.cpp
index 4dbe680cf..c7acfa2d8 100644
--- a/Source/Editor/Cooker/GameCooker.cpp
+++ b/Source/Editor/Cooker/GameCooker.cpp
@@ -189,6 +189,8 @@ const Char* ToString(const DotNetAOTModes mode)
return TEXT("MonoAOTDynamic");
case DotNetAOTModes::MonoAOTStatic:
return TEXT("MonoAOTStatic");
+ case DotNetAOTModes::NoDotnet:
+ return TEXT("NoDotnet");
default:
return TEXT("");
}
diff --git a/Source/Editor/Cooker/Platform/Web/WebPlatformTools.cpp b/Source/Editor/Cooker/Platform/Web/WebPlatformTools.cpp
index d1ed7fb9a..ab7a3aaa0 100644
--- a/Source/Editor/Cooker/Platform/Web/WebPlatformTools.cpp
+++ b/Source/Editor/Cooker/Platform/Web/WebPlatformTools.cpp
@@ -36,7 +36,7 @@ ArchitectureType WebPlatformTools::GetArchitecture() const
DotNetAOTModes WebPlatformTools::UseAOT() const
{
- return DotNetAOTModes::MonoAOTStatic;
+ return DotNetAOTModes::NoDotnet;
}
PixelFormat WebPlatformTools::GetTextureFormat(CookingData& data, TextureBase* texture, PixelFormat format)
diff --git a/Source/Editor/Cooker/Steps/DeployDataStep.cpp b/Source/Editor/Cooker/Steps/DeployDataStep.cpp
index 775b040de..c0cf2e809 100644
--- a/Source/Editor/Cooker/Steps/DeployDataStep.cpp
+++ b/Source/Editor/Cooker/Steps/DeployDataStep.cpp
@@ -39,17 +39,23 @@ bool DeployDataStep::Perform(CookingData& data)
}
String dstDotnet = data.DataOutputPath / TEXT("Dotnet");
const DotNetAOTModes aotMode = data.Tools->UseAOT();
- const bool usAOT = aotMode != DotNetAOTModes::None;
+ const bool usAOT = aotMode != DotNetAOTModes::None && aotMode != DotNetAOTModes::NoDotnet;
if (usAOT)
{
// Deploy Dotnet files into intermediate cooking directory for AOT
FileSystem::DeleteDirectory(dstDotnet);
dstDotnet = data.ManagedCodeOutputPath;
}
- if (buildSettings.SkipDotnetPackaging && data.Tools->UseSystemDotnet())
+ if (aotMode == DotNetAOTModes::NoDotnet)
+ {
+ // No .NET
+ FileSystem::DeleteDirectory(dstDotnet);
+ }
+ else if (buildSettings.SkipDotnetPackaging && data.Tools->UseSystemDotnet())
{
// Use system-installed .NET Runtime
FileSystem::DeleteDirectory(dstDotnet);
+ LOG(Info, "Not using .NET Runtime");
}
else
{
diff --git a/Source/Editor/Cooker/Steps/PrecompileAssembliesStep.cpp b/Source/Editor/Cooker/Steps/PrecompileAssembliesStep.cpp
index 626b532a6..30d3fdcbc 100644
--- a/Source/Editor/Cooker/Steps/PrecompileAssembliesStep.cpp
+++ b/Source/Editor/Cooker/Steps/PrecompileAssembliesStep.cpp
@@ -12,7 +12,9 @@
void PrecompileAssembliesStep::OnBuildStarted(CookingData& data)
{
const DotNetAOTModes aotMode = data.Tools->UseAOT();
- if (aotMode == DotNetAOTModes::None || EnumHasAllFlags(data.Options, BuildOptions::NoCook))
+ if (aotMode == DotNetAOTModes::None ||
+ aotMode == DotNetAOTModes::NoDotnet ||
+ EnumHasAllFlags(data.Options, BuildOptions::NoCook))
return;
const auto& buildSettings = *BuildSettings::Get();
@@ -49,7 +51,8 @@ void PrecompileAssembliesStep::OnBuildStarted(CookingData& data)
bool PrecompileAssembliesStep::Perform(CookingData& data)
{
const DotNetAOTModes aotMode = data.Tools->UseAOT();
- if (aotMode == DotNetAOTModes::None)
+ if (aotMode == DotNetAOTModes::None ||
+ aotMode == DotNetAOTModes::NoDotnet)
return false;
const auto& buildSettings = *BuildSettings::Get();
if (buildSettings.SkipDotnetPackaging && data.Tools->UseSystemDotnet())
diff --git a/Source/Engine/Scripting/Scripting.cpp b/Source/Engine/Scripting/Scripting.cpp
index aa7e26674..9b8439528 100644
--- a/Source/Engine/Scripting/Scripting.cpp
+++ b/Source/Engine/Scripting/Scripting.cpp
@@ -573,6 +573,7 @@ bool Scripting::Load()
auto* flaxEngineModule = (NativeBinaryModule*)GetBinaryModuleFlaxEngine();
if (!flaxEngineModule->Assembly->IsLoaded())
{
+#if USE_CSHARP
String flaxEnginePath = Globals::BinariesFolder / TEXT("FlaxEngine.CSharp.dll");
#if USE_MONO_AOT
if (!FileSystem::FileExists(flaxEnginePath))
@@ -583,6 +584,7 @@ bool Scripting::Load()
LOG(Error, "Failed to load FlaxEngine C# assembly.");
return true;
}
+#endif
flaxEngineModule->CanReload = false;
flaxEngineModule->Assembly->_canReload = false;
onEngineLoaded(flaxEngineModule->Assembly);
diff --git a/Source/Tools/Flax.Build/Build/DotNet/DotNetAOT.cs b/Source/Tools/Flax.Build/Build/DotNet/DotNetAOT.cs
index 96551a91d..c9db8fd64 100644
--- a/Source/Tools/Flax.Build/Build/DotNet/DotNetAOT.cs
+++ b/Source/Tools/Flax.Build/Build/DotNet/DotNetAOT.cs
@@ -33,6 +33,11 @@ namespace Flax.Build
/// Use Mono AOT to cross-compile all used C# assemblies into native platform static libraries which can be linked into a single shared library.
///
MonoAOTStatic,
+
+ ///
+ /// Target platform doesn't support .NET or it has been disabled.
+ ///
+ NoDotnet,
}
partial class Configuration