diff --git a/IKVM.sln b/IKVM.sln
index ea5ffb12bf..d69efc6beb 100644
--- a/IKVM.sln
+++ b/IKVM.sln
@@ -53,12 +53,6 @@ EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IKVM.MSBuild.Tasks.Tests", "src\IKVM.MSBuild.Tasks.Tests\IKVM.MSBuild.Tasks.Tests.csproj", "{E7C0E8FA-F34C-48C6-AD55-FD9798F5BC71}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IKVM.Java", "src\IKVM.Java\IKVM.Java.msbuildproj", "{ABD81C7E-F986-4018-986E-ACAF82C64D3A}"
- ProjectSection(ProjectDependencies) = postProject
- {0A87FF49-AC9D-479A-ACBB-F4028A0BE1F7} = {0A87FF49-AC9D-479A-ACBB-F4028A0BE1F7}
- {17979A73-C0CE-41CD-B54F-4E72B998E6D0} = {17979A73-C0CE-41CD-B54F-4E72B998E6D0}
- {2F29E48C-63C3-4E47-BCBA-A7454B9119CF} = {2F29E48C-63C3-4E47-BCBA-A7454B9119CF}
- {50954AE0-E513-4CE7-AC8E-F3896CA0BEB7} = {50954AE0-E513-4CE7-AC8E-F3896CA0BEB7}
- EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IKVM.NET.Sdk", "src\IKVM.NET.Sdk\IKVM.NET.Sdk.msbuildproj", "{704BD7C7-7746-4D72-A86E-ECFE7BBD80CC}"
EndProject
@@ -325,6 +319,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IKVM.Image.runtime.win-arm6
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IKVM.Reflection.Tests", "src\IKVM.Reflection.Tests\IKVM.Reflection.Tests.csproj", "{17755A44-22EC-4D28-B219-3C5CAE6317C8}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IKVM.Java.Tests.Util", "src\IKVM.Java.Tests.Util\IKVM.Java.Tests.Util.csproj", "{00AFE142-5F4F-48DD-90C1-20CC0512C43C}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -803,6 +799,10 @@ Global
{17755A44-22EC-4D28-B219-3C5CAE6317C8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{17755A44-22EC-4D28-B219-3C5CAE6317C8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{17755A44-22EC-4D28-B219-3C5CAE6317C8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {00AFE142-5F4F-48DD-90C1-20CC0512C43C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {00AFE142-5F4F-48DD-90C1-20CC0512C43C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {00AFE142-5F4F-48DD-90C1-20CC0512C43C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {00AFE142-5F4F-48DD-90C1-20CC0512C43C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/src/IKVM.Image.JDK.runtime.win-arm64/IKVM.Image.JDK.runtime.win-arm64.csproj b/src/IKVM.Image.JDK.runtime.win-arm64/IKVM.Image.JDK.runtime.win-arm64.csproj
index 2b57262371..7337df4c56 100644
--- a/src/IKVM.Image.JDK.runtime.win-arm64/IKVM.Image.JDK.runtime.win-arm64.csproj
+++ b/src/IKVM.Image.JDK.runtime.win-arm64/IKVM.Image.JDK.runtime.win-arm64.csproj
@@ -7,7 +7,6 @@
false
win-arm64
..\IKVM.Image.JDK-bin\IKVM.Image.JDK-bin.csproj
- net6.0
diff --git a/src/IKVM.Image.JDK.runtime.win-arm64/buildTransitive/IKVM.Image.JDK.runtime.win-arm64.props b/src/IKVM.Image.JDK.runtime.win-arm64/buildTransitive/IKVM.Image.JDK.runtime.win-arm64.props
index d893c696f4..ef06ff94ae 100644
--- a/src/IKVM.Image.JDK.runtime.win-arm64/buildTransitive/IKVM.Image.JDK.runtime.win-arm64.props
+++ b/src/IKVM.Image.JDK.runtime.win-arm64/buildTransitive/IKVM.Image.JDK.runtime.win-arm64.props
@@ -9,6 +9,11 @@
win-arm64
%(RecursiveDir)%(FileName)%(Extension)
+
+ net472
+ win-arm64
+ %(RecursiveDir)%(FileName)%(Extension)
+
net6.0
win-arm64
diff --git a/src/IKVM.Image.JRE.runtime.win-arm64/IKVM.Image.JRE.runtime.win-arm64.csproj b/src/IKVM.Image.JRE.runtime.win-arm64/IKVM.Image.JRE.runtime.win-arm64.csproj
index a038455964..4fa8b04522 100644
--- a/src/IKVM.Image.JRE.runtime.win-arm64/IKVM.Image.JRE.runtime.win-arm64.csproj
+++ b/src/IKVM.Image.JRE.runtime.win-arm64/IKVM.Image.JRE.runtime.win-arm64.csproj
@@ -7,7 +7,6 @@
false
win-arm64
..\IKVM.Image.JRE-bin\IKVM.Image.JRE-bin.csproj
- net6.0
diff --git a/src/IKVM.Image.JRE.runtime.win-arm64/buildTransitive/IKVM.Image.JRE.runtime.win-arm64.props b/src/IKVM.Image.JRE.runtime.win-arm64/buildTransitive/IKVM.Image.JRE.runtime.win-arm64.props
index d893c696f4..ef06ff94ae 100644
--- a/src/IKVM.Image.JRE.runtime.win-arm64/buildTransitive/IKVM.Image.JRE.runtime.win-arm64.props
+++ b/src/IKVM.Image.JRE.runtime.win-arm64/buildTransitive/IKVM.Image.JRE.runtime.win-arm64.props
@@ -9,6 +9,11 @@
win-arm64
%(RecursiveDir)%(FileName)%(Extension)
+
+ net472
+ win-arm64
+ %(RecursiveDir)%(FileName)%(Extension)
+
net6.0
win-arm64
diff --git a/src/IKVM.Image.runtime.win-arm64/IKVM.Image.runtime.win-arm64.csproj b/src/IKVM.Image.runtime.win-arm64/IKVM.Image.runtime.win-arm64.csproj
index b05f7ec8bb..4bd54a3ce8 100644
--- a/src/IKVM.Image.runtime.win-arm64/IKVM.Image.runtime.win-arm64.csproj
+++ b/src/IKVM.Image.runtime.win-arm64/IKVM.Image.runtime.win-arm64.csproj
@@ -7,7 +7,6 @@
false
win-arm64
..\IKVM.Image-bin\IKVM.Image-bin.csproj
- net6.0
diff --git a/src/IKVM.Image.runtime.win-arm64/buildTransitive/IKVM.Image.runtime.win-arm64.props b/src/IKVM.Image.runtime.win-arm64/buildTransitive/IKVM.Image.runtime.win-arm64.props
index d893c696f4..ef06ff94ae 100644
--- a/src/IKVM.Image.runtime.win-arm64/buildTransitive/IKVM.Image.runtime.win-arm64.props
+++ b/src/IKVM.Image.runtime.win-arm64/buildTransitive/IKVM.Image.runtime.win-arm64.props
@@ -9,6 +9,11 @@
win-arm64
%(RecursiveDir)%(FileName)%(Extension)
+
+ net472
+ win-arm64
+ %(RecursiveDir)%(FileName)%(Extension)
+
net6.0
win-arm64
diff --git a/src/IKVM.Java.Tests.Util/IKVM.Java.Tests.Util.csproj b/src/IKVM.Java.Tests.Util/IKVM.Java.Tests.Util.csproj
new file mode 100644
index 0000000000..1b6ae8895c
--- /dev/null
+++ b/src/IKVM.Java.Tests.Util/IKVM.Java.Tests.Util.csproj
@@ -0,0 +1,14 @@
+
+
+ net472;net6.0;net7.0
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/IKVM.Tests.Util/InMemoryCodeUnit.cs b/src/IKVM.Java.Tests.Util/InMemoryCodeUnit.cs
similarity index 96%
rename from src/IKVM.Tests.Util/InMemoryCodeUnit.cs
rename to src/IKVM.Java.Tests.Util/InMemoryCodeUnit.cs
index c0d7b9588e..dc687bca87 100644
--- a/src/IKVM.Tests.Util/InMemoryCodeUnit.cs
+++ b/src/IKVM.Java.Tests.Util/InMemoryCodeUnit.cs
@@ -1,6 +1,6 @@
using System;
-namespace IKVM.Tests.Util
+namespace IKVM.Java.Tests.Util
{
///
/// Represents a unit of code to compile.
diff --git a/src/IKVM.Tests.Util/InMemoryCompiler.cs b/src/IKVM.Java.Tests.Util/InMemoryCompiler.cs
similarity index 99%
rename from src/IKVM.Tests.Util/InMemoryCompiler.cs
rename to src/IKVM.Java.Tests.Util/InMemoryCompiler.cs
index f1d3d2d106..647e1a9979 100644
--- a/src/IKVM.Tests.Util/InMemoryCompiler.cs
+++ b/src/IKVM.Java.Tests.Util/InMemoryCompiler.cs
@@ -8,7 +8,7 @@
using javax.tools;
-namespace IKVM.Tests.Util
+namespace IKVM.Java.Tests.Util
{
///
@@ -174,7 +174,6 @@ public override CharSequence getCharContent(bool ignoreEncodingErrors)
public InMemoryCompiler(InMemoryCodeUnit[] source)
{
this.compiler = ToolProvider.getSystemJavaCompiler() ?? throw new System.Exception();
-
this.units = source ?? throw new ArgumentNullException(nameof(source));
this.files = new InMemoryForwardingJavaFileManager(compiler.getStandardFileManager(null, null, null), streams);
}
diff --git a/src/IKVM.Java/IKVM.Java.msbuildproj b/src/IKVM.Java/IKVM.Java.msbuildproj
index be715ca3d1..81ddd9d256 100644
--- a/src/IKVM.Java/IKVM.Java.msbuildproj
+++ b/src/IKVM.Java/IKVM.Java.msbuildproj
@@ -6,6 +6,7 @@
net472;net6.0
true
+ true
diff --git a/src/IKVM.MSBuild.Tasks/IKVM.MSBuild.Tasks.csproj b/src/IKVM.MSBuild.Tasks/IKVM.MSBuild.Tasks.csproj
index 8516d7968d..af84027354 100644
--- a/src/IKVM.MSBuild.Tasks/IKVM.MSBuild.Tasks.csproj
+++ b/src/IKVM.MSBuild.Tasks/IKVM.MSBuild.Tasks.csproj
@@ -11,7 +11,7 @@
-
+
diff --git a/src/IKVM.MSBuild.Tests/ProjectTests.cs b/src/IKVM.MSBuild.Tests/ProjectTests.cs
index bcb6d83104..f1cd5cac4b 100644
--- a/src/IKVM.MSBuild.Tests/ProjectTests.cs
+++ b/src/IKVM.MSBuild.Tests/ProjectTests.cs
@@ -143,8 +143,10 @@ public static void ClassCleanup()
[DataTestMethod]
[DataRow(EnvironmentPreference.Core, "net472", "win-x86", "{0}.exe", "{0}.dll")]
[DataRow(EnvironmentPreference.Core, "net472", "win-x64", "{0}.exe", "{0}.dll")]
+ [DataRow(EnvironmentPreference.Core, "net472", "win-arm64", "{0}.exe", "{0}.dll")]
[DataRow(EnvironmentPreference.Core, "net48", "win-x86", "{0}.exe", "{0}.dll")]
[DataRow(EnvironmentPreference.Core, "net48", "win-x64", "{0}.exe", "{0}.dll")]
+ [DataRow(EnvironmentPreference.Core, "net48", "win-arm64", "{0}.exe", "{0}.dll")]
[DataRow(EnvironmentPreference.Core, "net6.0", "win-x86", "{0}.exe", "{0}.dll")]
[DataRow(EnvironmentPreference.Core, "net6.0", "win-x64", "{0}.exe", "{0}.dll")]
[DataRow(EnvironmentPreference.Core, "net6.0", "win-arm64", "{0}.exe", "{0}.dll")]
@@ -169,8 +171,10 @@ public static void ClassCleanup()
[DataRow(EnvironmentPreference.Core, "net7.0", "osx-arm64", "{0}", "lib{0}.dylib")]
[DataRow(EnvironmentPreference.Framework, "net472", "win-x86", "{0}.exe", "{0}.dll")]
[DataRow(EnvironmentPreference.Framework, "net472", "win-x64", "{0}.exe", "{0}.dll")]
+ [DataRow(EnvironmentPreference.Framework, "net472", "win-arm64", "{0}.exe", "{0}.dll")]
[DataRow(EnvironmentPreference.Framework, "net48", "win-x86", "{0}.exe", "{0}.dll")]
[DataRow(EnvironmentPreference.Framework, "net48", "win-x64", "{0}.exe", "{0}.dll")]
+ [DataRow(EnvironmentPreference.Framework, "net48", "win-arm64", "{0}.exe", "{0}.dll")]
[DataRow(EnvironmentPreference.Framework, "net6.0", "win-x86", "{0}.exe", "{0}.dll")]
[DataRow(EnvironmentPreference.Framework, "net6.0", "win-x64", "{0}.exe", "{0}.dll")]
[DataRow(EnvironmentPreference.Framework, "net6.0", "win-arm64", "{0}.exe", "{0}.dll")]
diff --git a/src/IKVM.MSBuild.Tools.runtime.win-arm64/IKVM.MSBuild.Tools.runtime.win-arm64.csproj b/src/IKVM.MSBuild.Tools.runtime.win-arm64/IKVM.MSBuild.Tools.runtime.win-arm64.csproj
index 2a57df666e..1ecae57aea 100644
--- a/src/IKVM.MSBuild.Tools.runtime.win-arm64/IKVM.MSBuild.Tools.runtime.win-arm64.csproj
+++ b/src/IKVM.MSBuild.Tools.runtime.win-arm64/IKVM.MSBuild.Tools.runtime.win-arm64.csproj
@@ -15,6 +15,22 @@
+
+ TargetFramework=net472
+ RuntimeIdentifier=win-arm64
+ ikvmc\net472\win-arm64
+ PreserveNewest
+ ikvmc\net472\win-arm64
+ true
+
+
+ TargetFramework=net472
+ RuntimeIdentifier=win-arm64
+ ikvmstub\net472\win-arm64\bin
+ PreserveNewest
+ ikvmstub\net472\win-arm64
+ true
+
TargetFramework=net6.0
RuntimeIdentifier=win-arm64
diff --git a/src/IKVM.MSBuild.Tools.runtime.win-arm64/buildTransitive/IKVM.MSBuild.Tools.runtime.win-arm64.props b/src/IKVM.MSBuild.Tools.runtime.win-arm64/buildTransitive/IKVM.MSBuild.Tools.runtime.win-arm64.props
index 1db7dc3544..3227a46261 100644
--- a/src/IKVM.MSBuild.Tools.runtime.win-arm64/buildTransitive/IKVM.MSBuild.Tools.runtime.win-arm64.props
+++ b/src/IKVM.MSBuild.Tools.runtime.win-arm64/buildTransitive/IKVM.MSBuild.Tools.runtime.win-arm64.props
@@ -4,7 +4,9 @@
+
+
diff --git a/src/IKVM.NET.Sdk.Tests/ProjectTests.cs b/src/IKVM.NET.Sdk.Tests/ProjectTests.cs
index 8a0fc170b6..e9e9e5db54 100644
--- a/src/IKVM.NET.Sdk.Tests/ProjectTests.cs
+++ b/src/IKVM.NET.Sdk.Tests/ProjectTests.cs
@@ -136,8 +136,10 @@ public static void ClassCleanup()
[DataTestMethod]
[DataRow(EnvironmentPreference.Core, "net472", "win-x86", "{0}.exe", "{0}.dll")]
[DataRow(EnvironmentPreference.Core, "net472", "win-x64", "{0}.exe", "{0}.dll")]
+ [DataRow(EnvironmentPreference.Core, "net472", "win-arm64", "{0}.exe", "{0}.dll")]
[DataRow(EnvironmentPreference.Core, "net48", "win-x86", "{0}.exe", "{0}.dll")]
[DataRow(EnvironmentPreference.Core, "net48", "win-x64", "{0}.exe", "{0}.dll")]
+ [DataRow(EnvironmentPreference.Core, "net48", "win-arm64", "{0}.exe", "{0}.dll")]
[DataRow(EnvironmentPreference.Core, "net6.0", "win-x86", "{0}.exe", "{0}.dll")]
[DataRow(EnvironmentPreference.Core, "net6.0", "win-x64", "{0}.exe", "{0}.dll")]
[DataRow(EnvironmentPreference.Core, "net6.0", "win-arm64", "{0}.exe", "{0}.dll")]
diff --git a/src/IKVM.Reflection.Tests/FrameworkSpec.cs b/src/IKVM.Reflection.Tests/FrameworkSpec.cs
new file mode 100644
index 0000000000..77eb1e004e
--- /dev/null
+++ b/src/IKVM.Reflection.Tests/FrameworkSpec.cs
@@ -0,0 +1,28 @@
+using System.Collections.Generic;
+
+namespace IKVM.Reflection.Tests
+{
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public record struct FrameworkSpec(string Tfm, string TargetFrameworkIdentifier, string TargetFrameworkVersion)
+ {
+
+ ///
+ /// Individual Frameworks to test.
+ ///
+ public static IEnumerable
+
+ TargetFramework=net472
+ RuntimeIdentifier=win-arm64
+ ikvmc\net472\win-arm64
+ PreserveNewest
+
+
+ TargetFramework=net472
+ RuntimeIdentifier=win-arm64
+ ikvmstub\net472\win-arm64
+ PreserveNewest
+
+
TargetFramework=net6.0
RuntimeIdentifier=win-arm64
diff --git a/src/dist-image/dist-image.csproj b/src/dist-image/dist-image.csproj
index 4d3b1511bf..d2867afdac 100644
--- a/src/dist-image/dist-image.csproj
+++ b/src/dist-image/dist-image.csproj
@@ -11,6 +11,7 @@
+
diff --git a/src/dist-tools/dist-tools.csproj b/src/dist-tools/dist-tools.csproj
index 390fb772d9..120563f7af 100644
--- a/src/dist-tools/dist-tools.csproj
+++ b/src/dist-tools/dist-tools.csproj
@@ -9,6 +9,7 @@
+
diff --git a/src/ikvmc/Properties/launchSettings.json b/src/ikvmc/Properties/launchSettings.json
new file mode 100644
index 0000000000..37d0dc50cc
--- /dev/null
+++ b/src/ikvmc/Properties/launchSettings.json
@@ -0,0 +1,8 @@
+{
+ "profiles": {
+ "ikvmc": {
+ "commandName": "Project",
+ "commandLineArgs": "@C:\\dev\\ikvm\\src\\IKVM.Java\\obj\\Debug\\net6.0\\IKVM.Java.ikvmc.rsp"
+ }
+ }
+}
\ No newline at end of file