Skip to content

Commit dcee0dd

Browse files
authored
Merge pull request #1335 from Unity-Technologies/unity-master-method-to-skip-assembly-version-validation
Add option to ignore versions when loading strong named assemblies
2 parents 8d8f73b + 8dacd38 commit dcee0dd

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

mono/metadata/appdomain.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,16 @@ static MonoAssembly *
9898
mono_domain_assembly_search (MonoAssemblyName *aname,
9999
gpointer user_data);
100100

101+
102+
103+
static gboolean ignore_version_and_key_when_finding_assemblies_already_loaded = FALSE;
104+
105+
void
106+
mono_set_ignore_version_and_key_when_finding_assemblies_already_loaded(gboolean value)
107+
{
108+
ignore_version_and_key_when_finding_assemblies_already_loaded = value;
109+
}
110+
101111
static void
102112
mono_domain_fire_assembly_load (MonoAssembly *assembly, gpointer user_data);
103113

@@ -2085,7 +2095,7 @@ mono_domain_assembly_search (MonoAssemblyName *aname,
20852095
/* If it's not a strong name, any version that has the right simple
20862096
* name is good enough to satisfy the request. .NET Framework also
20872097
* ignores case differences in this case. */
2088-
const MonoAssemblyNameEqFlags eq_flags = strong_name ? MONO_ANAME_EQ_IGNORE_CASE :
2098+
const MonoAssemblyNameEqFlags eq_flags = (strong_name && !ignore_version_and_key_when_finding_assemblies_already_loaded) ? MONO_ANAME_EQ_IGNORE_CASE :
20892099
(MONO_ANAME_EQ_IGNORE_PUBKEY | MONO_ANAME_EQ_IGNORE_VERSION | MONO_ANAME_EQ_IGNORE_CASE);
20902100

20912101
mono_domain_assemblies_lock (domain);

mono/metadata/appdomain.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,9 @@ mono_domain_assembly_foreach (MonoDomain* domain, MonoDomainAssemblyFunc func, v
119119
MONO_API MonoAssembly *
120120
mono_domain_assembly_open (MonoDomain *domain, const char *name);
121121

122+
MONO_API void
123+
mono_set_ignore_version_and_key_when_finding_assemblies_already_loaded(mono_bool value);
124+
122125
MONO_API mono_bool
123126
mono_domain_finalize (MonoDomain *domain, uint32_t timeout);
124127

0 commit comments

Comments
 (0)