Skip to content

Commit 3492e3f

Browse files
committed
NativeAssemblyCacheWithSatelliteAssemblies works
1 parent edb9235 commit 3492e3f

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

tests/MSBuildDeviceIntegration/Tests/InstallAndRunTests.cs

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
using Microsoft.VisualStudio.TestPlatform.Utilities;
99
using Mono.Cecil;
1010
using NUnit.Framework;
11-
11+
using Xamarin.Android.Tasks;
1212
using Xamarin.Android.Tools;
1313
using Xamarin.ProjectTools;
1414

@@ -81,8 +81,22 @@ public void ActivityAliasRuns ([Values (true, false)] bool isRelease)
8181
}
8282

8383
[Test]
84-
public void NativeAssemblyCacheWithSatelliteAssemblies ([Values (true, false)] bool enableMarshalMethods)
84+
public void NativeAssemblyCacheWithSatelliteAssemblies ([Values (true, false)] bool enableMarshalMethods, [Values (AndroidRuntime.MonoVM, AndroidRuntime.CoreCLR)] AndroidRuntime runtime)
8585
{
86+
if (enableMarshalMethods && runtime == AndroidRuntime.CoreCLR) {
87+
// This currently fails with the following exception:
88+
//
89+
// error XARMM7015: System.NotSupportedException: Writing mixed-mode assemblies is not supported
90+
// at Mono.Cecil.ModuleWriter.Write(ModuleDefinition module, Disposable`1 stream, WriterParameters parameters)
91+
// at Mono.Cecil.ModuleWriter.WriteModule(ModuleDefinition module, Disposable`1 stream, WriterParameters parameters)
92+
// at Mono.Cecil.ModuleDefinition.Write(String fileName, WriterParameters parameters)
93+
// at Mono.Cecil.AssemblyDefinition.Write(String fileName, WriterParameters parameters)
94+
// at Xamarin.Android.Tasks.MarshalMethodsAssemblyRewriter.Rewrite(Boolean brokenExceptionTransitions) in src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodsAssemblyRewriter.cs:line 165
95+
// at Xamarin.Android.Tasks.RewriteMarshalMethods.RewriteMethods(NativeCodeGenState state, Boolean brokenExceptionTransitionsEnabled) in src/Xamarin.Android.Build.Tasks/Tasks/RewriteMarshalMethods.cs:line 160
96+
Assert.Ignore ("CoreCLR: fails because of a Mono.Cecil lack of support");
97+
return;
98+
}
99+
86100
var path = Path.Combine ("temp", TestName);
87101
var lib = new XamarinAndroidLibraryProject {
88102
ProjectName = "Localization",
@@ -92,6 +106,7 @@ public void NativeAssemblyCacheWithSatelliteAssemblies ([Values (true, false)] b
92106
},
93107
}
94108
};
109+
lib.SetRuntime (runtime);
95110

96111
var languages = new string[] {"es", "de", "fr", "he", "it", "pl", "pt", "ru", "sl" };
97112
foreach (string lang in languages) {
@@ -106,6 +121,7 @@ public void NativeAssemblyCacheWithSatelliteAssemblies ([Values (true, false)] b
106121
IsRelease = true,
107122
EnableMarshalMethods = enableMarshalMethods,
108123
};
124+
proj.SetRuntime (runtime);
109125
proj.References.Add (new BuildItem.ProjectReference ($"..\\{lib.ProjectName}\\{lib.ProjectName}.csproj", lib.ProjectName, lib.ProjectGuid));
110126

111127
using (var libBuilder = CreateDllBuilder (Path.Combine (path, lib.ProjectName))) {

0 commit comments

Comments
 (0)