### Godot version

4.0.beta13

### System information

Mageia 9, Linux

### Issue description

When exporting a trivial .NET project with 4.0.beta13, I get the following error:

```
ERROR: Required virtual method EditorExportPlugin::_get_name must be overridden before calling.
   at: _gdvirtual__get_name_call (editor/export/editor_export_plugin.h:123)
```

It doesn't seem to prevent exporting, but should be fixed anyway.

On the first export attempt (not be reproducible in my MRP, needs to be redone from scratch), it also shows this warning:
```
WARNING: Property not found: dotnet/project/assembly_name
     at: get_setting_with_override (core/config/project_settings.cpp:364)
```
Which likely means that we're using `GLOBAL_GET` before we defined the property with `GLOBAL_DEF`.

### Steps to reproduce

- Create a simple project with a hello world C# script
- Export it from Linux to Linux or Windows (didn't test other combinations, would likely have the same issue)
- Check Output dock / console

### Minimal reproduction project

[TestMono.zip](https://github.com/godotengine/godot/files/10445350/TestMono.zip)
}
	}
	// The object was just created, no script instance binding should have been attached
	CRASH_COND(CSharpLanguage::has_instance_binding(p_unmanaged));
	void *data;
	{
		MutexLock lock(CSharpLanguage::get_singleton()->get_language_bind_mutex());
		data = (void *)CSharpLanguage::get_singleton()->insert_script_binding(p_unmanaged, script_binding);
	}
	// Should be thread safe because the object was just created and nothing else should be referencing it
	CSharpLanguage::set_instance_binding(p_unmanaged, data);
}
void CSharpLanguage::tie_user_managed_to_unmanaged(GCHandleIntPtr p_gchandle_intptr, Object *p_unmanaged, Ref<CSharpScript> *p_script, bool p_ref_counted) {
	// This method should not fail
	Ref<CSharpScript> script = *p_script;
	// We take care of destructing this reference here, so the managed code won't need to do another P/Invoke call
	p_script->~Ref();
	CRASH_COND(!p_unmanaged);
	// All mono objects created from the managed world (e.g.: 'new Player()')
	// need to have a CSharpScript in order for their methods to be callable from the unmanaged side
	RefCounted *rc = Object::cast_to<RefCounted>(p_unmanaged);
	CRASH_COND(p_ref_counted != (bool)rc);
	MonoGCHandleData gchandle = MonoGCHandleData(p_gchandle_intptr,
			p_ref_counted ? gdmono::GCHandleType::WEAK_HANDLE : gdmono::GCHandleType::STRONG_HANDLE);
	CRASH_COND(script.is_null());
	CSharpInstance *csharp_instance = CSharpInstance::create_for_managed_type(p_unmanaged, script.ptr(), gchandle);
	p_unmanaged->set_script_and_instance(script, csharp_instance);
	csharp_instance->connect_event_signals();
}
void CSharpLanguage::tie_managed_to_unmanaged_with_pre_setup(GCHandleIntPtr p_gchandle_intptr, Object *p_unmanaged) {