refactor(srp): unify engine managed assembly discovery

This commit is contained in:
2026-04-19 05:17:42 +08:00
parent 5fa209ab5d
commit 11a03a4b46
11 changed files with 458 additions and 71 deletions

View File

@@ -15,6 +15,7 @@
#include <cstdint>
#include <memory>
#include <string>
#include <utility>
using namespace XCEngine::Components;
using namespace XCEngine::Scripting;
@@ -27,10 +28,6 @@ MonoScriptRuntime::Settings CreateMonoSettings() {
settings.assemblyDirectory = XCENGINE_TEST_MANAGED_OUTPUT_DIR;
settings.corlibDirectory = XCENGINE_TEST_MANAGED_OUTPUT_DIR;
settings.coreAssemblyPath = XCENGINE_TEST_SCRIPT_CORE_DLL;
settings.engineAssemblies.push_back(
MonoScriptRuntime::ManagedAssemblyDescriptor{
"XCEngine.RenderPipelines.Universal",
XCENGINE_TEST_RENDER_PIPELINES_UNIVERSAL_DLL});
settings.appAssemblyPath = XCENGINE_TEST_GAME_SCRIPTS_DLL;
return settings;
}
@@ -163,7 +160,15 @@ protected:
engine = &ScriptEngine::Get();
engine->OnRuntimeStop();
runtime = std::make_unique<MonoScriptRuntime>(CreateMonoSettings());
MonoScriptRuntime::Settings settings = CreateMonoSettings();
std::string engineAssemblyError;
ASSERT_TRUE(
MonoScriptRuntime::DiscoverEngineAssemblies(
settings,
&engineAssemblyError))
<< engineAssemblyError;
runtime = std::make_unique<MonoScriptRuntime>(std::move(settings));
ASSERT_TRUE(runtime->Initialize()) << runtime->GetLastError();
engine->SetRuntime(runtime.get());