handzlikchris/FastScriptReload

There is an issue accessing internal variables at runtime.

Opened this issue · 0 comments

Although a copy of the original assembly Assembly-Csharp.dll is located in the ajustDll folder and has been modified to make the patch assembly is a friend assembly to patch, allowing the patch assembly to compile with access to internal variables in Assembly-Csharp, the actual assembly running is not the DLL under the ajustdll folder but rather Assembly-CSharp.dll in Library/ScriptAssemblies. Therefore, accessing internal variables at runtime will cause issues.

I thought of a solution: adding a file named AssemblyInfo.cs to the project with the following content:
using System.Runtime.CompilerServices; [assembly: InternalsVisibleTo("Assembly-CSharp_Patch_0")] [assembly: InternalsVisibleTo("Assembly-CSharp_Patch_1")] [assembly: InternalsVisibleTo("Assembly-CSharp_Patch_2")] [assembly: InternalsVisibleTo("Assembly-CSharp_Patch_3")] [assembly: InternalsVisibleTo("Assembly-CSharp_Patch_4")] [assembly: InternalsVisibleTo("Assembly-CSharp_Patch_5")] ... [assembly: InternalsVisibleTo("Assembly-CSharp_Patch_N")]

This way, during runtime, the generated patch file names will be Assembly-CSharp_Patch_0 to Assembly-CSharp_Patch_N, which will allow the patch assembly to access the internal variables in Assembly-Csharp with the proper permissions.