Mono: Add extra WASM framework assemblies on game export
This is needed with newer Mono versions, at least with Mono 6.12+
Depends on the following commit from our build scripts:
godotengine/godot-mono-builds@9d75cff174
(cherry picked from commit b98e8b11e6
)
This commit is contained in:
parent
e072b3db82
commit
bf942447a3
1 changed files with 44 additions and 1 deletions
|
@ -173,6 +173,8 @@ namespace GodotTools.Export
|
||||||
|
|
||||||
assemblies[projectDllName] = projectDllSrcPath;
|
assemblies[projectDllName] = projectDllSrcPath;
|
||||||
|
|
||||||
|
string bclDir = DeterminePlatformBclDir(platform);
|
||||||
|
|
||||||
if (platform == OS.Platforms.Android)
|
if (platform == OS.Platforms.Android)
|
||||||
{
|
{
|
||||||
string godotAndroidExtProfileDir = GetBclProfileDir("godot_android_ext");
|
string godotAndroidExtProfileDir = GetBclProfileDir("godot_android_ext");
|
||||||
|
@ -183,8 +185,49 @@ namespace GodotTools.Export
|
||||||
|
|
||||||
assemblies["Mono.Android"] = monoAndroidAssemblyPath;
|
assemblies["Mono.Android"] = monoAndroidAssemblyPath;
|
||||||
}
|
}
|
||||||
|
else if (platform == OS.Platforms.HTML5)
|
||||||
|
{
|
||||||
|
// Ideally these would be added automatically since they're referenced by the wasm BCL assemblies.
|
||||||
|
// However, at least in the case of 'WebAssembly.Net.Http' for some reason the BCL assemblies
|
||||||
|
// reference a different version even though the assembly is the same, for some weird reason.
|
||||||
|
|
||||||
string bclDir = DeterminePlatformBclDir(platform);
|
var wasmFrameworkAssemblies = new[] {"WebAssembly.Bindings", "WebAssembly.Net.WebSockets"};
|
||||||
|
|
||||||
|
foreach (string thisWasmFrameworkAssemblyName in wasmFrameworkAssemblies)
|
||||||
|
{
|
||||||
|
string thisWasmFrameworkAssemblyPath = Path.Combine(bclDir, thisWasmFrameworkAssemblyName + ".dll");
|
||||||
|
if (!File.Exists(thisWasmFrameworkAssemblyPath))
|
||||||
|
throw new FileNotFoundException($"Assembly not found: '{thisWasmFrameworkAssemblyName}'", thisWasmFrameworkAssemblyPath);
|
||||||
|
assemblies[thisWasmFrameworkAssemblyName] = thisWasmFrameworkAssemblyPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assemblies that can have a different name in a newer version. Newer version must come first and it has priority.
|
||||||
|
(string newName, string oldName)[] wasmFrameworkAssembliesOneOf = new[]
|
||||||
|
{
|
||||||
|
("System.Net.Http.WebAssemblyHttpHandler", "WebAssembly.Net.Http")
|
||||||
|
};
|
||||||
|
|
||||||
|
foreach (var thisWasmFrameworkAssemblyName in wasmFrameworkAssembliesOneOf)
|
||||||
|
{
|
||||||
|
string thisWasmFrameworkAssemblyPath = Path.Combine(bclDir, thisWasmFrameworkAssemblyName.newName + ".dll");
|
||||||
|
if (File.Exists(thisWasmFrameworkAssemblyPath))
|
||||||
|
{
|
||||||
|
assemblies[thisWasmFrameworkAssemblyName.newName] = thisWasmFrameworkAssemblyPath;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
thisWasmFrameworkAssemblyPath = Path.Combine(bclDir, thisWasmFrameworkAssemblyName.oldName + ".dll");
|
||||||
|
if (!File.Exists(thisWasmFrameworkAssemblyPath))
|
||||||
|
{
|
||||||
|
throw new FileNotFoundException("Expected one of the following assemblies but none were found: " +
|
||||||
|
$"'{thisWasmFrameworkAssemblyName.newName}' / '{thisWasmFrameworkAssemblyName.oldName}'",
|
||||||
|
thisWasmFrameworkAssemblyPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
assemblies[thisWasmFrameworkAssemblyName.oldName] = thisWasmFrameworkAssemblyPath;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var initialAssemblies = assemblies.Duplicate();
|
var initialAssemblies = assemblies.Duplicate();
|
||||||
internal_GetExportedAssemblyDependencies(initialAssemblies, buildConfig, bclDir, assemblies);
|
internal_GetExportedAssemblyDependencies(initialAssemblies, buildConfig, bclDir, assemblies);
|
||||||
|
|
Loading…
Reference in a new issue