diff --git a/packages/Avalonia/Avalonia.props b/packages/Avalonia/Avalonia.props index 259349452bb..db43467f933 100644 --- a/packages/Avalonia/Avalonia.props +++ b/packages/Avalonia/Avalonia.props @@ -8,6 +8,7 @@ true false false + true diff --git a/packages/Avalonia/AvaloniaRules.Project.xml b/packages/Avalonia/AvaloniaRules.Project.xml index 3a268249462..b69ea6de17a 100644 --- a/packages/Avalonia/AvaloniaRules.Project.xml +++ b/packages/Avalonia/AvaloniaRules.Project.xml @@ -50,7 +50,7 @@ + + + + + (has-evaluated-value "Avalonia" "AvaloniaNameGeneratorBehavior" "InitializeComponent") + + + + * * NamespaceAndClassName + true @@ -15,6 +16,7 @@ + diff --git a/src/tools/Avalonia.Generators/GeneratorOptions.cs b/src/tools/Avalonia.Generators/GeneratorOptions.cs index bfa91f691c9..9dcf5062f42 100644 --- a/src/tools/Avalonia.Generators/GeneratorOptions.cs +++ b/src/tools/Avalonia.Generators/GeneratorOptions.cs @@ -14,7 +14,7 @@ internal enum BuildProperties AvaloniaNameGeneratorFilterByPath = 3, AvaloniaNameGeneratorFilterByNamespace = 4, AvaloniaNameGeneratorViewFileNamingStrategy = 5, - + AvaloniaNameGeneratorAttachDevTools = 6, // TODO add other generators properties here. } @@ -48,6 +48,10 @@ internal class GeneratorOptions BuildProperties.AvaloniaNameGeneratorFilterByNamespace, "*"); + public bool AvaloniaNameGeneratorAttachDevTools => GetBoolProperty( + BuildProperties.AvaloniaNameGeneratorAttachDevTools, + true); + private string[] GetStringArrayProperty(BuildProperties name, string defaultValue) { var key = name.ToString(); diff --git a/src/tools/Avalonia.Generators/NameGenerator/AvaloniaNameSourceGenerator.cs b/src/tools/Avalonia.Generators/NameGenerator/AvaloniaNameSourceGenerator.cs index 3219bda792d..fad7283ded8 100644 --- a/src/tools/Avalonia.Generators/NameGenerator/AvaloniaNameSourceGenerator.cs +++ b/src/tools/Avalonia.Generators/NameGenerator/AvaloniaNameSourceGenerator.cs @@ -68,7 +68,7 @@ private static INameGenerator CreateNameGenerator(GeneratorExecutionContext cont var types = new RoslynTypeSystem((CSharpCompilation)context.Compilation); ICodeGenerator generator = options.AvaloniaNameGeneratorBehavior switch { Behavior.OnlyProperties => new OnlyPropertiesCodeGenerator(), - Behavior.InitializeComponent => new InitializeComponentCodeGenerator(types), + Behavior.InitializeComponent => new InitializeComponentCodeGenerator(types, options.AvaloniaNameGeneratorAttachDevTools), _ => throw new ArgumentOutOfRangeException() }; diff --git a/src/tools/Avalonia.Generators/NameGenerator/InitializeComponentCodeGenerator.cs b/src/tools/Avalonia.Generators/NameGenerator/InitializeComponentCodeGenerator.cs index b84c65f7b50..d2a59511e1d 100644 --- a/src/tools/Avalonia.Generators/NameGenerator/InitializeComponentCodeGenerator.cs +++ b/src/tools/Avalonia.Generators/NameGenerator/InitializeComponentCodeGenerator.cs @@ -19,9 +19,10 @@ private const string AttachDevToolsParameterDocumentation = @" /// Should the dev tools be attached. "; - public InitializeComponentCodeGenerator(IXamlTypeSystem types) + + public InitializeComponentCodeGenerator(IXamlTypeSystem types, bool avaloniaNameGeneratorAttachDevTools) { - _diagnosticsAreConnected = types.FindAssembly("Avalonia.Diagnostics") != null; + _diagnosticsAreConnected = avaloniaNameGeneratorAttachDevTools && types.FindAssembly("Avalonia.Diagnostics") != null; } public string GenerateCode(string className, string nameSpace, IXamlType xamlType, IEnumerable names) diff --git a/tests/Avalonia.Generators.Tests/InitializeComponent/InitializeComponentTests.cs b/tests/Avalonia.Generators.Tests/InitializeComponent/InitializeComponentTests.cs index 7bd9c355773..1653796f52b 100644 --- a/tests/Avalonia.Generators.Tests/InitializeComponent/InitializeComponentTests.cs +++ b/tests/Avalonia.Generators.Tests/InitializeComponent/InitializeComponentTests.cs @@ -3,7 +3,6 @@ using Avalonia.Generators.Compiler; using Avalonia.Generators.NameGenerator; using Avalonia.Generators.Tests.InitializeComponent.GeneratedInitializeComponent; -using Avalonia.Generators.Tests.OnlyProperties.GeneratedCode; using Avalonia.Generators.Tests.Views; using Microsoft.CodeAnalysis.CSharp; using Xunit; @@ -48,7 +47,7 @@ public async Task Should_Generate_FindControl_Refs_From_Avalonia_Markup_File( var nameResolver = new XamlXNameResolver(); var names = nameResolver.ResolveNames(classInfo.Xaml); - var generator = new InitializeComponentCodeGenerator(types); + var generator = new InitializeComponentCodeGenerator(types, devToolsMode); var code = generator .GenerateCode("SampleView", "Sample.App", classInfo.XamlType, names)