From b031dcfe1f7c9a8b61bed198ae4ce2b926dfbe68 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Tue, 18 Oct 2022 12:44:08 +0600 Subject: [PATCH 1/2] Removed deprecated XAML compiler features --- packages/Avalonia/AvaloniaBuildTasks.targets | 3 -- .../CompileAvaloniaXamlTask.cs | 5 +-- .../GenerateAvaloniaResourcesTask.cs | 6 ---- src/Avalonia.Build.Tasks/Program.cs | 3 +- .../XamlCompilerTaskExecutor.Helpers.cs | 32 ------------------- .../XamlCompilerTaskExecutor.cs | 17 +++------- .../Avalonia.MicroCom.csproj | 3 -- 7 files changed, 7 insertions(+), 62 deletions(-) diff --git a/packages/Avalonia/AvaloniaBuildTasks.targets b/packages/Avalonia/AvaloniaBuildTasks.targets index d43a5c1624..4b9e33ffe8 100644 --- a/packages/Avalonia/AvaloniaBuildTasks.targets +++ b/packages/Avalonia/AvaloniaBuildTasks.targets @@ -3,7 +3,6 @@ <_AvaloniaUseExternalMSBuild>$(AvaloniaUseExternalMSBuild) <_AvaloniaUseExternalMSBuild Condition="'$(_AvaloniaForceInternalMSBuild)' == 'true'">false low - <_AvaloniaPatchComInterop Condition="'$(_AvaloniaPatchComInterop)' == ''">false <_AvaloniaSkipXamlCompilation Condition="'$(_AvaloniaSkipXamlCompilation)' == ''">false @@ -71,7 +70,6 @@ Output="$(AvaloniaResourcesTemporaryFilePath)" Root="$(MSBuildProjectDirectory)" Resources="@(AvaloniaResource)" - EmbeddedResources="@(EmbeddedResources)" ReportImportance="$(AvaloniaXamlReportImportance)"/> diff --git a/src/Avalonia.Build.Tasks/CompileAvaloniaXamlTask.cs b/src/Avalonia.Build.Tasks/CompileAvaloniaXamlTask.cs index 62a9ed27be..13e8b14891 100644 --- a/src/Avalonia.Build.Tasks/CompileAvaloniaXamlTask.cs +++ b/src/Avalonia.Build.Tasks/CompileAvaloniaXamlTask.cs @@ -37,8 +37,7 @@ namespace Avalonia.Build.Tasks var res = XamlCompilerTaskExecutor.Compile(BuildEngine, input, File.ReadAllLines(ReferencesFilePath).Where(l => !string.IsNullOrWhiteSpace(l)).ToArray(), ProjectDirectory, OutputPath, VerifyIl, outputImportance, - (SignAssembly && !DelaySign) ? AssemblyOriginatorKeyFile : null, - EnableComInteropPatching, SkipXamlCompilation, DebuggerLaunch); + (SignAssembly && !DelaySign) ? AssemblyOriginatorKeyFile : null, SkipXamlCompilation, DebuggerLaunch); if (!res.Success) return false; if (!res.WrittenFile) @@ -72,8 +71,6 @@ namespace Avalonia.Build.Tasks public string OutputPath { get; set; } public bool VerifyIl { get; set; } - - public bool EnableComInteropPatching { get; set; } public bool SkipXamlCompilation { get; set; } public string AssemblyOriginatorKeyFile { get; set; } diff --git a/src/Avalonia.Build.Tasks/GenerateAvaloniaResourcesTask.cs b/src/Avalonia.Build.Tasks/GenerateAvaloniaResourcesTask.cs index c20b2f656e..6bd1e29956 100644 --- a/src/Avalonia.Build.Tasks/GenerateAvaloniaResourcesTask.cs +++ b/src/Avalonia.Build.Tasks/GenerateAvaloniaResourcesTask.cs @@ -19,8 +19,6 @@ namespace Avalonia.Build.Tasks public string Root { get; set; } [Required] public string Output { get; set; } - [Required] - public ITaskItem[] EmbeddedResources { get; set; } public string ReportImportance { get; set; } @@ -149,10 +147,6 @@ namespace Avalonia.Build.Tasks Enum.TryParse(ReportImportance, out _reportImportance); BuildEngine.LogMessage($"GenerateAvaloniaResourcesTask -> Root: {Root}, {Resources?.Count()} resources, Output:{Output}", _reportImportance < MessageImportance.Low ? MessageImportance.High : _reportImportance); - - foreach (var r in EmbeddedResources.Where(r => r.ItemSpec.EndsWith(".xaml") || r.ItemSpec.EndsWith(".paml") || r.ItemSpec.EndsWith(".axaml"))) - BuildEngine.LogWarning(BuildEngineErrorCode.LegacyResmScheme, r.ItemSpec, - "XAML file is packed using legacy EmbeddedResource/resm scheme, relative URIs won't work"); var resources = BuildResourceSources(); if (!PreProcessXamlFiles(resources)) diff --git a/src/Avalonia.Build.Tasks/Program.cs b/src/Avalonia.Build.Tasks/Program.cs index e3f00968fd..f42fab5964 100644 --- a/src/Avalonia.Build.Tasks/Program.cs +++ b/src/Avalonia.Build.Tasks/Program.cs @@ -44,8 +44,7 @@ namespace Avalonia.Build.Tasks OutputPath = args[2], BuildEngine = new ConsoleBuildEngine(), ProjectDirectory = Directory.GetCurrentDirectory(), - VerifyIl = true, - EnableComInteropPatching = true + VerifyIl = true }.Execute() ? 0 : 2; diff --git a/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.Helpers.cs b/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.Helpers.cs index 5a2c74e16f..f83e07bd74 100644 --- a/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.Helpers.cs +++ b/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.Helpers.cs @@ -24,38 +24,6 @@ namespace Avalonia.Build.Tasks string Name { get; } IEnumerable Resources { get; } } - - class EmbeddedResources : IResourceGroup - { - private readonly AssemblyDefinition _asm; - public string Name => "EmbeddedResource"; - - public IEnumerable Resources => _asm.MainModule.Resources.OfType() - .Select(r => new WrappedResource(_asm, r)).ToList(); - - public EmbeddedResources(AssemblyDefinition asm) - { - _asm = asm; - } - class WrappedResource : IResource - { - private readonly AssemblyDefinition _asm; - private readonly EmbeddedResource _res; - - public WrappedResource(AssemblyDefinition asm, EmbeddedResource res) - { - _asm = asm; - _res = res; - } - - public string Uri => $"resm:{Name}?assembly={_asm.Name.Name}"; - public string Name => _res.Name; - public string FilePath => Name; - public byte[] FileContents => _res.GetResourceData(); - - public void Remove() => _asm.MainModule.Resources.Remove(_res); - } - } class AvaloniaResources : IResourceGroup { diff --git a/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.cs b/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.cs index 5915388822..d2ccea8fa4 100644 --- a/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.cs +++ b/src/Avalonia.Build.Tasks/XamlCompilerTaskExecutor.cs @@ -39,15 +39,15 @@ namespace Avalonia.Build.Tasks public static CompileResult Compile(IBuildEngine engine, string input, string[] references, string projectDirectory, - string output, bool verifyIl, MessageImportance logImportance, string strongNameKey, bool patchCom, + string output, bool verifyIl, MessageImportance logImportance, string strongNameKey, bool skipXamlCompilation) { - return Compile(engine, input, references, projectDirectory, output, verifyIl, logImportance, strongNameKey, patchCom, skipXamlCompilation, debuggerLaunch:false); + return Compile(engine, input, references, projectDirectory, output, verifyIl, logImportance, strongNameKey, skipXamlCompilation, debuggerLaunch:false); } internal static CompileResult Compile(IBuildEngine engine, string input, string[] references, string projectDirectory, - string output, bool verifyIl, MessageImportance logImportance, string strongNameKey, bool patchCom, bool skipXamlCompilation, bool debuggerLaunch) + string output, bool verifyIl, MessageImportance logImportance, string strongNameKey, bool skipXamlCompilation, bool debuggerLaunch) { var typeSystem = new CecilTypeSystem( references.Where(r => !r.ToLowerInvariant().EndsWith("avalonia.build.tasks.dll")), @@ -58,15 +58,12 @@ namespace Avalonia.Build.Tasks if (!skipXamlCompilation) { var compileRes = CompileCore(engine, typeSystem, projectDirectory, verifyIl, logImportance, debuggerLaunch); - if (compileRes == null && !patchCom) + if (compileRes == null) return new CompileResult(true); if (compileRes == false) return new CompileResult(false); } - if (patchCom) - ComInteropHelper.PatchAssembly(asm, typeSystem); - var writerParameters = new WriterParameters { WriteSymbols = asm.MainModule.HasSymbols }; if (!string.IsNullOrWhiteSpace(strongNameKey)) writerParameters.StrongNameKeyBlob = File.ReadAllBytes(strongNameKey); @@ -112,9 +109,8 @@ namespace Avalonia.Build.Tasks } } var asm = typeSystem.TargetAssemblyDefinition; - var emres = new EmbeddedResources(asm); var avares = new AvaloniaResources(asm, projectDirectory); - if (avares.Resources.Count(CheckXamlName) == 0 && emres.Resources.Count(CheckXamlName) == 0) + if (avares.Resources.Count(CheckXamlName) == 0) // Nothing to do return null; @@ -436,9 +432,6 @@ namespace Avalonia.Build.Tasks return true; } - if (emres.Resources.Count(CheckXamlName) != 0) - if (!CompileGroup(emres)) - return false; if (avares.Resources.Count(CheckXamlName) != 0) { if (!CompileGroup(avares)) diff --git a/src/Avalonia.MicroCom/Avalonia.MicroCom.csproj b/src/Avalonia.MicroCom/Avalonia.MicroCom.csproj index d7f39f6642..599d95e67a 100644 --- a/src/Avalonia.MicroCom/Avalonia.MicroCom.csproj +++ b/src/Avalonia.MicroCom/Avalonia.MicroCom.csproj @@ -3,9 +3,6 @@ netstandard2.0 true - - <_AvaloniaPatchComInterop>true - false From 46e13637adb88fe297b7c43d96ec4cb6904a5384 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Tue, 18 Oct 2022 19:32:33 +0600 Subject: [PATCH 2/2] Fixed Avalonia.DesignerSupport.TestApp --- .../Avalonia.DesignerSupport.TestApp.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Avalonia.DesignerSupport.TestApp/Avalonia.DesignerSupport.TestApp.csproj b/tests/Avalonia.DesignerSupport.TestApp/Avalonia.DesignerSupport.TestApp.csproj index 278b0e087e..a91cf3911a 100644 --- a/tests/Avalonia.DesignerSupport.TestApp/Avalonia.DesignerSupport.TestApp.csproj +++ b/tests/Avalonia.DesignerSupport.TestApp/Avalonia.DesignerSupport.TestApp.csproj @@ -8,9 +8,9 @@ %(Filename) - + Designer - +