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)