diff --git a/ICSharpCode.Decompiler.Tests/Helpers/RoslynToolset.cs b/ICSharpCode.Decompiler.Tests/Helpers/RoslynToolset.cs index cf53163d6..fb3fa757e 100644 --- a/ICSharpCode.Decompiler.Tests/Helpers/RoslynToolset.cs +++ b/ICSharpCode.Decompiler.Tests/Helpers/RoslynToolset.cs @@ -18,12 +18,13 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; -using ICSharpCode.Decompiler.Util; +using ICSharpCode.Decompiler.Metadata; using NuGet.Common; using NuGet.Packaging; @@ -31,6 +32,8 @@ using NuGet.Protocol; using NuGet.Protocol.Core.Types; using NuGet.Versioning; +using NUnit.Framework; + namespace ICSharpCode.Decompiler.Tests.Helpers { abstract class AbstractToolset @@ -50,29 +53,45 @@ namespace ICSharpCode.Decompiler.Tests.Helpers protected async Task FetchPackage(string packageName, string version, string sourcePath, string outputPath) { + if (!Directory.Exists(Path.Combine(Roundtrip.RoundtripAssembly.TestDir, "nuget"))) + Assert.Fail("No nuget cache found!"); + ILogger logger = NullLogger.Instance; CancellationToken cancellationToken = CancellationToken.None; - using MemoryStream packageStream = new MemoryStream(); - - await resource.CopyNupkgToStreamAsync( - packageName, - NuGetVersion.Parse(version), - packageStream, - cache, - logger, - cancellationToken).ConfigureAwait(false); - - using PackageArchiveReader packageReader = new PackageArchiveReader(packageStream); - NuspecReader nuspecReader = await packageReader.GetNuspecReaderAsync(cancellationToken).ConfigureAwait(false); - - var files = (await packageReader.GetFilesAsync(cancellationToken).ConfigureAwait(false)).ToArray(); - files = files.Where(f => f.StartsWith(sourcePath, StringComparison.OrdinalIgnoreCase)).ToArray(); - await packageReader.CopyFilesAsync(outputPath, files, - (sourceFile, targetPath, fileStream) => { - fileStream.CopyToFile(targetPath); - return targetPath; - }, - logger, cancellationToken).ConfigureAwait(false); + string pathToPackage = Path.Combine(Roundtrip.RoundtripAssembly.TestDir, "nuget", $"{packageName}-{version}.nupkg"); + Stream packageStream; + if (File.Exists(pathToPackage)) + { + packageStream = File.OpenRead(pathToPackage); + } + else + { + packageStream = new MemoryStream(); + + await resource.CopyNupkgToStreamAsync( + packageName, + NuGetVersion.Parse(version), + packageStream, + cache, + logger, + cancellationToken).ConfigureAwait(false); + + packageStream.Position = 0; + } + using (packageStream) + { + using PackageArchiveReader packageReader = new PackageArchiveReader(packageStream); + NuspecReader nuspecReader = await packageReader.GetNuspecReaderAsync(cancellationToken).ConfigureAwait(false); + + var files = (await packageReader.GetFilesAsync(cancellationToken).ConfigureAwait(false)).ToArray(); + files = files.Where(f => f.StartsWith(sourcePath, StringComparison.OrdinalIgnoreCase)).ToArray(); + await packageReader.CopyFilesAsync(outputPath, files, + (sourceFile, targetPath, fileStream) => { + fileStream.CopyToFile(targetPath); + return targetPath; + }, + logger, cancellationToken).ConfigureAwait(false); + } } } @@ -145,4 +164,44 @@ namespace ICSharpCode.Decompiler.Tests.Helpers public string GetVsWhere() => vswherePath; } + + class RefAssembliesToolset : AbstractToolset + { + readonly Dictionary installedFrameworks = new Dictionary { + { "legacy", Path.Combine(Roundtrip.RoundtripAssembly.TestDir, "dotnet", "legacy") }, + { "2.2.0", Path.Combine(Roundtrip.RoundtripAssembly.TestDir, "dotnet", "netcore-2.2") }, + }; + + public RefAssembliesToolset() + : base(Path.Combine(AppContext.BaseDirectory, "netfx")) + { + } + + public async Task Fetch(string version, string packageName = "Microsoft.NETCore.App.Ref", string sourcePath = "ref/net5.0") + { + string path = Path.Combine(baseDir, version, sourcePath); + if (!Directory.Exists(path)) + { + await FetchPackage(packageName, version, sourcePath, Path.Combine(baseDir, version)).ConfigureAwait(false); + } + + installedFrameworks.Add(RoslynToolset.SanitizeVersion(version), path); + } + + internal string GetPath(string targetFramework) + { + var (id, version) = UniversalAssemblyResolver.ParseTargetFramework(targetFramework); + string path; + if (id == TargetFrameworkIdentifier.NETFramework) + { + path = installedFrameworks["legacy"]; + } + else + { + path = installedFrameworks[version.ToString(3)]; + } + Debug.Assert(Path.Exists(path)); + return path; + } + } } diff --git a/ICSharpCode.Decompiler.Tests/Helpers/Tester.VB.cs b/ICSharpCode.Decompiler.Tests/Helpers/Tester.VB.cs index 6b8e403e3..c40f267bc 100644 --- a/ICSharpCode.Decompiler.Tests/Helpers/Tester.VB.cs +++ b/ICSharpCode.Decompiler.Tests/Helpers/Tester.VB.cs @@ -16,12 +16,9 @@ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. using System; -using System.CodeDom.Compiler; using System.Collections.Generic; -using System.Diagnostics; using System.IO; using System.Linq; -using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; @@ -49,27 +46,30 @@ namespace ICSharpCode.Decompiler.Tests.Helpers CompilerResults results = new CompilerResults(); results.PathToAssembly = outputFileName; - var (roslynVersion, languageVersion) = (flags & CompilerOptions.UseRoslynMask) switch { - 0 => ("legacy", "11"), - CompilerOptions.UseRoslyn1_3_2 => ("1.3.2", "14"), - CompilerOptions.UseRoslyn2_10_0 => ("2.10.0", "latest"), - CompilerOptions.UseRoslyn3_11_0 => ("3.11.0", "latest"), - _ => (roslynLatestVersion, flags.HasFlag(CompilerOptions.Preview) ? "preview" : "latest") + bool targetNet40 = (flags & CompilerOptions.TargetNet40) != 0; + + var (roslynVersion, languageVersion, targetFramework) = (flags & CompilerOptions.UseRoslynMask) switch { + 0 => ("legacy", "11", null), + CompilerOptions.UseRoslyn1_3_2 => ("1.3.2", "14", null), + CompilerOptions.UseRoslyn2_10_0 => ("2.10.0", "latest", targetNet40 ? null : ".NETCoreApp,Version=v2.2"), + CompilerOptions.UseRoslyn3_11_0 => ("3.11.0", "latest", targetNet40 ? null : ".NETCoreApp,Version=v5.0"), + _ => (roslynLatestVersion, flags.HasFlag(CompilerOptions.Preview) ? "preview" : "latest", targetNet40 ? null : ".NETCoreApp,Version=v10.0") }; var vbcPath = roslynToolset.GetVBCompiler(roslynVersion); IEnumerable references; string libPath; - if ((flags & CompilerOptions.UseRoslynMask) != 0 && (flags & CompilerOptions.TargetNet40) == 0) + if ((flags & CompilerOptions.UseRoslynMask) != 0 && targetFramework != null) { + var coreRefAsmPath = RefAssembliesToolset.GetPath(targetFramework); references = coreDefaultReferences.Select(r => "-r:\"" + r + "\""); libPath = coreRefAsmPath; } else { references = defaultReferences.Select(r => "-r:\"" + r + "\""); - libPath = RefAsmPath; + libPath = RefAssembliesToolset.GetPath("legacy"); } if (flags.HasFlag(CompilerOptions.ReferenceVisualBasic)) { @@ -121,7 +121,7 @@ namespace ICSharpCode.Decompiler.Tests.Helpers var command = Cli.Wrap(vbcPath) .WithArguments($"{otherOptions}-libpath:\"{libPath}\" {string.Join(" ", references)} -out:\"{Path.GetFullPath(results.PathToAssembly)}\" {string.Join(" ", sourceFileNames.Select(fn => '"' + Path.GetFullPath(fn) + '"'))}") .WithValidation(CommandResultValidation.None); - Console.WriteLine($"\"{command.TargetFilePath}\" {command.Arguments}"); + //Console.WriteLine($"\"{command.TargetFilePath}\" {command.Arguments}"); var result = await command.ExecuteBufferedAsync().ConfigureAwait(false); diff --git a/ICSharpCode.Decompiler.Tests/Helpers/Tester.cs b/ICSharpCode.Decompiler.Tests/Helpers/Tester.cs index d1c00d9cc..00b44f989 100644 --- a/ICSharpCode.Decompiler.Tests/Helpers/Tester.cs +++ b/ICSharpCode.Decompiler.Tests/Helpers/Tester.cs @@ -99,6 +99,7 @@ namespace ICSharpCode.Decompiler.Tests.Helpers static readonly string roslynLatestVersion; static readonly RoslynToolset roslynToolset; static readonly VsWhereToolset vswhereToolset; + internal static readonly RefAssembliesToolset RefAssembliesToolset; static Tester() { @@ -120,6 +121,7 @@ namespace ICSharpCode.Decompiler.Tests.Helpers roslynToolset = new RoslynToolset(); vswhereToolset = new VsWhereToolset(); + RefAssembliesToolset = new RefAssembliesToolset(); } internal static async Task Initialize() @@ -130,6 +132,9 @@ namespace ICSharpCode.Decompiler.Tests.Helpers await roslynToolset.Fetch(roslynLatestVersion).ConfigureAwait(false); await vswhereToolset.Fetch().ConfigureAwait(false); + await RefAssembliesToolset.Fetch("5.0.0", sourcePath: "ref/net5.0").ConfigureAwait(false); + await RefAssembliesToolset.Fetch("10.0.0-preview.4.25258.110", sourcePath: "ref/net10.0").ConfigureAwait(false); + #if DEBUG await BuildTestRunner("win-x86", "Debug").ConfigureAwait(false); @@ -276,21 +281,15 @@ namespace ICSharpCode.Decompiler.Tests.Helpers return Regex.Replace(il, @"'\{[0-9A-F-]+\}'", "''"); } - static readonly string coreRefAsmPath = new DotNetCorePathFinder(TargetFrameworkIdentifier.NET, - new Version(10, 0), "Microsoft.NETCore.App") - .GetReferenceAssemblyPath(".NETCoreApp,Version=v10.0"); - - public static readonly string RefAsmPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), - @"Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2"); - static readonly string[] defaultReferences = new[] { "System.dll", "System.Core.dll", + "System.Runtime.dll", "System.Xml.dll", "Microsoft.CSharp.dll" }; - static readonly string[] coreDefaultReferences = new[] + static readonly string[] core220DefaultReferences = new[] { "netstandard.dll", "mscorlib.dll", @@ -303,9 +302,12 @@ namespace ICSharpCode.Decompiler.Tests.Helpers "System.Linq.Queryable.dll", "System.IO.FileSystem.Watcher.dll", "System.Memory.dll", + "System.Private.CoreLib.dll", + "System.Private.Xml.dll", "System.Threading.dll", "System.Threading.Thread.dll", "System.Runtime.dll", + "System.Runtime.Extensions.dll", "System.Runtime.InteropServices.dll", "System.Xml.dll", "System.Xml.ReaderWriter.dll", @@ -314,19 +316,45 @@ namespace ICSharpCode.Decompiler.Tests.Helpers "Microsoft.VisualBasic.dll", }; - const string targetFrameworkAttributeSnippet = @" - -[assembly: System.Runtime.Versioning.TargetFramework("".NETCoreApp,Version=v10.0"", FrameworkDisplayName = """")] - -"; + static readonly string[] coreDefaultReferences = new[] + { + "netstandard.dll", + "mscorlib.dll", + "System.dll", + "System.Collections.dll", + "System.Console.dll", + "System.Core.dll", + "System.Linq.dll", + "System.Linq.Expressions.dll", + "System.Linq.Queryable.dll", + "System.IO.FileSystem.Watcher.dll", + "System.Memory.dll", + "System.Threading.dll", + "System.Threading.Thread.dll", + "System.Runtime.dll", + "System.Runtime.InteropServices.dll", + "System.Xml.dll", + "System.Xml.ReaderWriter.dll", + "System.ValueTuple.dll", + "Microsoft.CSharp.dll", + "Microsoft.VisualBasic.dll", + }; - static readonly Lazy targetFrameworkAttributeSnippetFile = new Lazy(GetTargetFrameworkAttributeSnippetFile); + static readonly Dictionary> targetFrameworkAttributeSnippetFiles = new() { + { ".NETCoreApp,Version=v10.0", new Lazy(() => GetTargetFrameworkAttributeSnippetFile(".NETCoreApp,Version=v10.0")) }, + { ".NETCoreApp,Version=v5.0", new Lazy(() => GetTargetFrameworkAttributeSnippetFile(".NETCoreApp,Version=v5.0")) }, + { ".NETCoreApp,Version=v2.2", new Lazy(() => GetTargetFrameworkAttributeSnippetFile(".NETCoreApp,Version=v2.2")) }, + }; - static string GetTargetFrameworkAttributeSnippetFile() + static string GetTargetFrameworkAttributeSnippetFile(string targetFrameworkMoniker) { // Note: this leaks a temporary file, we're not attempting to delete it, because it is only one. var tempFile = Path.GetTempFileName(); - File.WriteAllText(tempFile, targetFrameworkAttributeSnippet); + File.WriteAllText(tempFile, $@" + +[assembly: System.Runtime.Versioning.TargetFramework(""{targetFrameworkMoniker}"")] + +"); return tempFile; } @@ -389,9 +417,6 @@ namespace System.Runtime.CompilerServices if (!flags.HasFlag(CompilerOptions.TargetNet40)) { preprocessorSymbols.Add("NETCORE"); - preprocessorSymbols.Add("NET60"); - preprocessorSymbols.Add("NET70"); - preprocessorSymbols.Add("NET80"); } preprocessorSymbols.Add("ROSLYN"); preprocessorSymbols.Add("CS60"); @@ -411,6 +436,10 @@ namespace System.Runtime.CompilerServices if (flags.HasFlag(CompilerOptions.UseRoslyn3_11_0) || flags.HasFlag(CompilerOptions.UseRoslynLatest)) { + if (!flags.HasFlag(CompilerOptions.TargetNet40)) + { + preprocessorSymbols.Add("NET50"); + } preprocessorSymbols.Add("ROSLYN3"); preprocessorSymbols.Add("CS80"); preprocessorSymbols.Add("CS90"); @@ -418,6 +447,14 @@ namespace System.Runtime.CompilerServices } if (flags.HasFlag(CompilerOptions.UseRoslynLatest)) { + if (!flags.HasFlag(CompilerOptions.TargetNet40)) + { + preprocessorSymbols.Add("NET60"); + preprocessorSymbols.Add("NET70"); + preprocessorSymbols.Add("NET80"); + preprocessorSymbols.Add("NET90"); + preprocessorSymbols.Add("NET100"); + } preprocessorSymbols.Add("ROSLYN4"); preprocessorSymbols.Add("CS100"); preprocessorSymbols.Add("CS110"); @@ -453,10 +490,6 @@ namespace System.Runtime.CompilerServices } bool targetNet40 = (flags & CompilerOptions.TargetNet40) != 0; bool useRoslyn = (flags & CompilerOptions.UseRoslynMask) != 0; - if (useRoslyn && !targetNet40) - { - sourceFileNames.Add(targetFrameworkAttributeSnippetFile.Value); - } if (targetNet40) { @@ -470,36 +503,58 @@ namespace System.Runtime.CompilerServices CompilerResults results = new CompilerResults(); results.PathToAssembly = outputFileName; - var (roslynVersion, languageVersion) = (flags & CompilerOptions.UseRoslynMask) switch { - 0 => ("legacy", "5"), - CompilerOptions.UseRoslyn1_3_2 => ("1.3.2", "6"), - CompilerOptions.UseRoslyn2_10_0 => ("2.10.0", "latest"), - CompilerOptions.UseRoslyn3_11_0 => ("3.11.0", "latest"), - _ => (roslynLatestVersion, flags.HasFlag(CompilerOptions.Preview) ? "preview" : "latest") + var (roslynVersion, languageVersion, targetFramework) = (flags & CompilerOptions.UseRoslynMask) switch { + 0 => ("legacy", "5", null), + CompilerOptions.UseRoslyn1_3_2 => ("1.3.2", "6", null), + CompilerOptions.UseRoslyn2_10_0 => ("2.10.0", "latest", targetNet40 ? null : ".NETCoreApp,Version=v2.2"), + CompilerOptions.UseRoslyn3_11_0 => ("3.11.0", "latest", targetNet40 ? null : ".NETCoreApp,Version=v5.0"), + _ => (roslynLatestVersion, flags.HasFlag(CompilerOptions.Preview) ? "preview" : "latest", targetNet40 ? null : ".NETCoreApp,Version=v10.0") }; var cscPath = roslynToolset.GetCSharpCompiler(roslynVersion); - string libPath; + string libPath, refAsmPath; IEnumerable references; - if (useRoslyn && !targetNet40) + if (useRoslyn && targetFramework != null) { - libPath = "\"" + coreRefAsmPath + "\""; - references = coreDefaultReferences.Select(r => "-r:\"" + Path.Combine(coreRefAsmPath, r) + "\""); + refAsmPath = RefAssembliesToolset.GetPath(targetFramework); + if (targetFramework == ".NETCoreApp,Version=v2.2") + { + references = core220DefaultReferences; + if (flags.HasFlag(CompilerOptions.ReferenceVisualBasic)) + { + references = references.Append("Microsoft.VisualBasic.dll"); + } + } + else + { + references = coreDefaultReferences; + if (flags.HasFlag(CompilerOptions.ReferenceVisualBasic)) + { + references = references.Append("Microsoft.VisualBasic.dll"); + references = references.Append("Microsoft.VisualBasic.Core.dll"); + } + } + libPath = "\"" + refAsmPath + "\""; + sourceFileNames.Add(targetFrameworkAttributeSnippetFiles[targetFramework].Value); } else { - libPath = "\"" + RefAsmPath + "\",\"" + Path.Combine(RefAsmPath, "Facades") + "\""; - references = defaultReferences.Select(r => "-r:\"" + Path.Combine(RefAsmPath, r) + "\""); - } - if (flags.HasFlag(CompilerOptions.ReferenceVisualBasic)) - { - references = references.Concat(new[] { "-r:\"Microsoft.VisualBasic.dll\"" }); + refAsmPath = RefAssembliesToolset.GetPath("legacy"); + libPath = "\"" + refAsmPath + "\""; + references = defaultReferences; + if (flags.HasFlag(CompilerOptions.ReferenceVisualBasic)) + { + references = references.Append("Microsoft.VisualBasic.dll"); + } } if (useRoslyn && !targetNet40 && flags.HasFlag(CompilerOptions.ReferenceUnsafe)) { - references = references.Concat(new[] { "-r:\"System.Runtime.CompilerServices.Unsafe.dll\"" }); + references = references.Append("System.Runtime.CompilerServices.Unsafe.dll"); } + + references = references.Select(r => "-r:\"" + Path.Combine(refAsmPath, r) + "\""); + string otherOptions = $"-nologo -noconfig " + $"-langversion:{languageVersion} " + $"-unsafe -o{(flags.HasFlag(CompilerOptions.Optimize) ? "+ " : "- ")}"; @@ -685,7 +740,7 @@ namespace System.Runtime.CompilerServices } var compilation = CSharpCompilation.Create(Path.GetFileNameWithoutExtension(assemblyName), - syntaxTrees, coreDefaultReferences.Select(r => MetadataReference.CreateFromFile(Path.Combine(coreRefAsmPath, r))), + syntaxTrees, coreDefaultReferences.Select(r => MetadataReference.CreateFromFile(Path.Combine(RefAssembliesToolset.GetPath(".NETCoreApp,Version=v10.0"), r))), new CSharpCompilationOptions( OutputKind.DynamicallyLinkedLibrary, platform: Platform.AnyCpu, @@ -767,7 +822,7 @@ namespace System.Runtime.CompilerServices string targetFramework = module.Metadata.DetectTargetFrameworkId(); var resolver = new UniversalAssemblyResolver(assemblyFileName, false, targetFramework, null, PEStreamOptions.PrefetchMetadata); - resolver.AddSearchDirectory(targetFramework.Contains(".NETFramework") ? RefAsmPath : coreRefAsmPath); + resolver.AddSearchDirectory(RefAssembliesToolset.GetPath(targetFramework)); var typeSystem = new DecompilerTypeSystem(module, resolver, settings); CSharpDecompiler decompiler = new CSharpDecompiler(typeSystem, settings); decompiler.AstTransforms.Insert(0, new RemoveEmbeddedAttributes()); diff --git a/ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs b/ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs index 12020c28b..ae18373fa 100644 --- a/ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs +++ b/ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs @@ -59,8 +59,6 @@ namespace ICSharpCode.Decompiler.Tests static readonly CompilerOptions[] roslynOnlyWithNet40Options = { - CompilerOptions.UseRoslyn1_3_2 | CompilerOptions.TargetNet40, - CompilerOptions.Optimize | CompilerOptions.UseRoslyn1_3_2 | CompilerOptions.TargetNet40, CompilerOptions.UseRoslyn2_10_0 | CompilerOptions.TargetNet40, CompilerOptions.Optimize | CompilerOptions.UseRoslyn2_10_0 | CompilerOptions.TargetNet40, CompilerOptions.UseRoslyn3_11_0 | CompilerOptions.TargetNet40, @@ -145,8 +143,6 @@ namespace ICSharpCode.Decompiler.Tests { CompilerOptions.None, CompilerOptions.Optimize, - CompilerOptions.UseRoslyn1_3_2 | CompilerOptions.TargetNet40, - CompilerOptions.Optimize | CompilerOptions.UseRoslyn1_3_2 | CompilerOptions.TargetNet40, CompilerOptions.UseRoslyn2_10_0 | CompilerOptions.TargetNet40, CompilerOptions.Optimize | CompilerOptions.UseRoslyn2_10_0 | CompilerOptions.TargetNet40, CompilerOptions.UseRoslyn3_11_0 | CompilerOptions.TargetNet40, @@ -167,8 +163,6 @@ namespace ICSharpCode.Decompiler.Tests { CompilerOptions.None, CompilerOptions.Optimize, - CompilerOptions.UseRoslyn1_3_2 | CompilerOptions.TargetNet40, - CompilerOptions.Optimize | CompilerOptions.UseRoslyn1_3_2 | CompilerOptions.TargetNet40, CompilerOptions.UseRoslyn2_10_0 | CompilerOptions.TargetNet40, CompilerOptions.Optimize | CompilerOptions.UseRoslyn2_10_0 | CompilerOptions.TargetNet40, CompilerOptions.UseRoslyn3_11_0 | CompilerOptions.TargetNet40, diff --git a/ICSharpCode.Decompiler.Tests/TestCases/ILPretty/Issue1325.il b/ICSharpCode.Decompiler.Tests/TestCases/ILPretty/Issue1325.il index 789dfd710..129422762 100644 --- a/ICSharpCode.Decompiler.Tests/TestCases/ILPretty/Issue1325.il +++ b/ICSharpCode.Decompiler.Tests/TestCases/ILPretty/Issue1325.il @@ -31,7 +31,7 @@ // .custom instance void [System.Runtime]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [System.Runtime]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 07 01 00 00 00 00 ) .custom instance void [System.Runtime]System.Runtime.Versioning.TargetFrameworkAttribute::.ctor(string) = ( 01 00 18 2E 4E 45 54 43 6F 72 65 41 70 70 2C 56 // ....NETCoreApp,V - 65 72 73 69 6F 6E 3D 76 32 2E 31 01 00 54 0E 14 // ersion=v2.1..T.. + 65 72 73 69 6F 6E 3D 76 32 2E 32 01 00 54 0E 14 // ersion=v2.2..T.. 46 72 61 6D 65 77 6F 72 6B 44 69 73 70 6C 61 79 // FrameworkDisplay 4E 61 6D 65 00 ) // Name. .custom instance void [System.Runtime]System.Reflection.AssemblyConfigurationAttribute::.ctor(string) = ( 01 00 05 44 65 62 75 67 00 00 ) // ...Debug.. diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/MetadataAttributes.cs b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/MetadataAttributes.cs index a1a8e258c..0ba3e51f6 100644 --- a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/MetadataAttributes.cs +++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/MetadataAttributes.cs @@ -9,7 +9,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty { [MethodImpl(MethodImplOptions.AggressiveInlining)] public extern void A(); -#if NETCORE +#if !NET40 && ROSLYN3 [MethodImpl(MethodImplOptions.AggressiveOptimization)] public extern void B(); #endif @@ -29,7 +29,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty public extern void J(); [MethodImpl(MethodImplOptions.AggressiveInlining, MethodCodeType = MethodCodeType.Native)] public extern void A1(); -#if NETCORE +#if !NET40 && ROSLYN3 [MethodImpl(MethodImplOptions.AggressiveOptimization, MethodCodeType = MethodCodeType.Native)] public extern void B1(); #endif @@ -49,7 +49,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty public extern void J1(); [MethodImpl(MethodImplOptions.AggressiveInlining, MethodCodeType = MethodCodeType.OPTIL)] public extern void A2(); -#if NETCORE +#if !NET40 && ROSLYN3 [MethodImpl(MethodImplOptions.AggressiveOptimization, MethodCodeType = MethodCodeType.OPTIL)] public extern void B2(); #endif @@ -69,7 +69,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty public extern void J2(); [MethodImpl(MethodImplOptions.AggressiveInlining, MethodCodeType = MethodCodeType.OPTIL)] public extern void A3(); -#if NETCORE +#if !NET40 && ROSLYN3 [MethodImpl(MethodImplOptions.AggressiveOptimization, MethodCodeType = MethodCodeType.Runtime)] public extern void B3(); #endif diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/Switch.cs b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/Switch.cs index f5647187f..f8ca658ed 100644 --- a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/Switch.cs +++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/Switch.cs @@ -1624,7 +1624,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty public static bool DoNotRemoveAssignmentBeforeSwitch(string x, out ConsoleKey key) { -#if NET40 || !ROSLYN +#if NET40 || !ROSLYN4 key = (ConsoleKey)0; #else key = ConsoleKey.None; @@ -1641,7 +1641,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty key = ConsoleKey.C; break; } -#if NET40 || !ROSLYN +#if NET40 || !ROSLYN4 return key != (ConsoleKey)0; #else return key != ConsoleKey.None; diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/WellKnownConstants.cs b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/WellKnownConstants.cs index 9170a8d89..109909388 100644 --- a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/WellKnownConstants.cs +++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/WellKnownConstants.cs @@ -83,7 +83,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty public const float Float_Tenth = 0.1f; public const double Double_Tenth = 0.1; -#if ROSLYN && !NET40 +#if ROSLYN2 && !NET40 public const float Float_PI = MathF.PI; public const float Float_HalfOfPI = MathF.PI / 2f; public const float Float_QuarterOfPI = MathF.PI / 4f; diff --git a/ICSharpCode.Decompiler.Tests/TypeSystem/TypeSystemLoaderTests.cs b/ICSharpCode.Decompiler.Tests/TypeSystem/TypeSystemLoaderTests.cs index 2059f6c42..94436f4d6 100644 --- a/ICSharpCode.Decompiler.Tests/TypeSystem/TypeSystemLoaderTests.cs +++ b/ICSharpCode.Decompiler.Tests/TypeSystem/TypeSystemLoaderTests.cs @@ -47,12 +47,12 @@ namespace ICSharpCode.Decompiler.Tests.TypeSystem static readonly Lazy mscorlib = new Lazy( delegate { - return LoadAssembly(Path.Combine(Helpers.Tester.RefAsmPath, "mscorlib.dll")); + return LoadAssembly(Path.Combine(Helpers.Tester.RefAssembliesToolset.GetPath("legacy"), "mscorlib.dll")); }); static readonly Lazy systemCore = new Lazy( delegate { - return LoadAssembly(Path.Combine(Helpers.Tester.RefAsmPath, "System.Core.dll")); + return LoadAssembly(Path.Combine(Helpers.Tester.RefAssembliesToolset.GetPath("legacy"), "System.Core.dll")); }); static readonly Lazy testAssembly = new Lazy( diff --git a/ILSpy-tests b/ILSpy-tests index 6f8860e42..dd5081d55 160000 --- a/ILSpy-tests +++ b/ILSpy-tests @@ -1 +1 @@ -Subproject commit 6f8860e420b54bdfd726ec3c58a4d178416f9156 +Subproject commit dd5081d55372c57744874042f60e7c23ff69f5f6