X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fmcs%2Fikvm.cs;h=a2e49f07f70479245979ebdbe9c7934e84f77bfe;hb=HEAD;hp=1243712f160dac5db9e9b50b7c6057cf385d6f11;hpb=f704d56c378b28e252572db4730a6e13edc14aa0;p=mono.git diff --git a/mcs/mcs/ikvm.cs b/mcs/mcs/ikvm.cs index 1243712f160..a2e49f07f70 100644 --- a/mcs/mcs/ikvm.cs +++ b/mcs/mcs/ikvm.cs @@ -134,7 +134,7 @@ namespace Mono.CSharp if (t.Name[0] == '<') continue; - var it = CreateType (t, null, new DynamicTypeReader (t), true); + var it = CreateType (t, null, new AttributesTypeInfoReader (t), true); if (it == null) continue; @@ -254,6 +254,7 @@ namespace Mono.CSharp sdk_directory.Add ("4.6", new string[] { "4.6-api", "v4.0.30319" }); sdk_directory.Add ("4.6.1", new string[] { "4.6.1-api", "v4.0.30319" }); sdk_directory.Add ("4.6.2", new string [] { "4.6.2-api", "v4.0.30319" }); + sdk_directory.Add ("4.7", new string [] { "4.7-api", "v4.0.30319" }); sdk_directory.Add ("4.x", new string [] { "4.5", "net_4_x", "v4.0.30319" }); } @@ -519,13 +520,23 @@ namespace Mono.CSharp return null; } - if ((an.Flags & AssemblyNameFlags.PublicKey) == (loaded_name.Flags & AssemblyNameFlags.PublicKey)) { - compiler.Report.SymbolRelatedToPreviousError (entry.Item2); - compiler.Report.SymbolRelatedToPreviousError (fileName); - compiler.Report.Error (1703, - "An assembly `{0}' with the same identity has already been imported. Consider removing one of the references", - an.Name); - return null; + AssemblyComparisonResult result; + if ((an.Flags & AssemblyNameFlags.PublicKey) == (loaded_name.Flags & AssemblyNameFlags.PublicKey) && + (domain.CompareAssemblyIdentity (an.FullName, false, loaded_name.FullName, false, out result))) { + + // + // Roslyn is much more lenient than native compiler here + // + switch (result) { + case AssemblyComparisonResult.EquivalentFXUnified: + case AssemblyComparisonResult.EquivalentUnified: + compiler.Report.SymbolRelatedToPreviousError (entry.Item2); + compiler.Report.SymbolRelatedToPreviousError (fileName); + compiler.Report.Error (1703, + "An assembly `{0}' with the same identity has already been imported. Consider removing one of the references", + an.Name); + return null; + } } }