Skip to content

Commit a897c85

Browse files
committed
Fix Avalonia Designer support
1 parent d72a05c commit a897c85

6 files changed

Lines changed: 15 additions & 21 deletions

File tree

Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<PropertyGroup>
44
<TargetAvaloniaVersion Condition="'$(TargetAvaloniaVersion)' == ''">11.0</TargetAvaloniaVersion>
55
<AvaloniaAppHostPackageVersionMajor>0</AvaloniaAppHostPackageVersionMajor>
6-
<AvaloniaAppHostPackageVersionPrev>preview.3</AvaloniaAppHostPackageVersionPrev>
6+
<AvaloniaAppHostPackageVersionPrev>preview.4</AvaloniaAppHostPackageVersionPrev>
77
</PropertyGroup>
88

99
<Choose>

src/package-avalonia-apphost/buildTransitive/ChsBuffer.Avalonia.AppHost.targets

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<Project>
22
<PropertyGroup>
33
<DisableSkiaHarfBuzzRuntimeCopy Condition="'$(DisableSkiaHarfBuzzRuntimeCopy)' == ''">true</DisableSkiaHarfBuzzRuntimeCopy>
4+
<DetectAvaloniaDesigner Condition="'$(DetectAvaloniaDesigner)' == ''">true</DetectAvaloniaDesigner>
45
</PropertyGroup>
56

67
<PropertyGroup>
@@ -39,6 +40,10 @@
3940
BeforeTargets="CoreCompile"
4041
DependsOnTargets="ResolveAvaloniaAppHostActivation"
4142
Condition="'$(AvaloniaAppHostActive)' == 'true' and Exists('$(_AvaloniaModuleInitializer)')">
43+
<PropertyGroup>
44+
<DefineConstants Condition="'$(DetectAvaloniaDesigner)' == 'true'">$(DefineConstants);DETECT_AVALONIA_DESIGNER</DefineConstants>
45+
</PropertyGroup>
46+
4247
<ItemGroup>
4348
<Compile Include="$(_AvaloniaModuleInitializer)"
4449
Link="HostForge\Avalonia\ModuleInitializer.g.cs"
@@ -53,20 +58,6 @@
5358
<Warning Text="ChsBuffer.Avalonia.AppHost is inactive for TargetFramework='$(TargetFramework)' RuntimeIdentifier='$(RuntimeIdentifier)'. Expected templates under 'template/$(_AvaloniaTemplateTfm)/$(_AvaloniaTemplateRid)' (or default net10.0/win-x64). Host replacement and Skia/HarfBuzz runtime copy suppression are disabled." />
5459
</Target>
5560

56-
<Target Name="DisableSkiaHarfBuzzCopyLocalItems"
57-
AfterTargets="ResolveReferences"
58-
DependsOnTargets="ResolveAvaloniaAppHostActivation"
59-
Condition="'$(DisableSkiaHarfBuzzRuntimeCopy)' == 'true' and '$(AvaloniaAppHostActive)' == 'true'">
60-
<ItemGroup>
61-
<ReferenceCopyLocalPaths Remove="@(ReferenceCopyLocalPaths)"
62-
Condition="$(_AvaloniaSkiaNativeFileNames.Contains(';%(ReferenceCopyLocalPaths.Filename)%(ReferenceCopyLocalPaths.Extension);')) or $(_AvaloniaHarfBuzzNativeFileNames.Contains(';%(ReferenceCopyLocalPaths.Filename)%(ReferenceCopyLocalPaths.Extension);'))" />
63-
<NativeCopyLocalItems Remove="@(NativeCopyLocalItems)"
64-
Condition="$(_AvaloniaSkiaNativeFileNames.Contains(';%(NativeCopyLocalItems.Filename)%(NativeCopyLocalItems.Extension);')) or $(_AvaloniaHarfBuzzNativeFileNames.Contains(';%(NativeCopyLocalItems.Filename)%(NativeCopyLocalItems.Extension);'))" />
65-
<RuntimeCopyLocalItems Remove="@(RuntimeCopyLocalItems)"
66-
Condition="$(_AvaloniaSkiaNativeFileNames.Contains(';%(RuntimeCopyLocalItems.Filename)%(RuntimeCopyLocalItems.Extension);')) or $(_AvaloniaHarfBuzzNativeFileNames.Contains(';%(RuntimeCopyLocalItems.Filename)%(RuntimeCopyLocalItems.Extension);'))" />
67-
</ItemGroup>
68-
</Target>
69-
7061
<Target Name="DisableSkiaHarfBuzzPublishItems"
7162
BeforeTargets="_CopyResolvedFilesToPublishPreserveNewest;_CopyResolvedFilesToPublishAlways"
7263
DependsOnTargets="ResolveAvaloniaAppHostActivation"

src/package-avalonia-apphost/contentFiles/cs/net10.0/ModuleInitializer.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ public static void Init()
2525

2626
private static IntPtr Resolve(string libraryName, Assembly assembly, DllImportSearchPath? searchPath)
2727
{
28+
#if DETECT_AVALONIA_DESIGNER
29+
if (global::Avalonia.Controls.Design.IsDesignMode) return IntPtr.Zero;
30+
#endif
2831
if (NativeDllNames.Contains(libraryName))
2932
{
3033
return NativeLibrary.GetMainProgramHandle();

tests/HostForge.AvaloniaAppHost.Tests/AvaloniaAppHostLinuxTests.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,11 @@ public async Task PublishLinuxX64_RunsAndPrintsNativeVersion()
4444
}
4545

4646
[Test]
47-
public async Task DisableSkiaHarfBuzzRuntimeCopy_AffectsBuildAndPublishOutputs_LinuxX64()
47+
public async Task DisableSkiaHarfBuzzRuntimeCopy_AffectsPublishOutputs_LinuxX64()
4848
{
4949
SwitchRuleCase[] cases =
5050
[
51-
new("net10_build_default_linux", "build", DisableSkiaHarfBuzzRuntimeCopy: null, ExpectNativeRuntimeCopy: false),
52-
new("net10_build_copy-switch-false_linux", "build", DisableSkiaHarfBuzzRuntimeCopy: false, ExpectNativeRuntimeCopy: true),
51+
new("net10_publish_default_linux", "publish", DisableSkiaHarfBuzzRuntimeCopy: null, ExpectNativeRuntimeCopy: false),
5352
new("net10_publish_copy-switch-false_linux", "publish", DisableSkiaHarfBuzzRuntimeCopy: false, ExpectNativeRuntimeCopy: true)
5453
];
5554

tests/HostForge.AvaloniaAppHost.Tests/AvaloniaAppHostTests.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,11 @@ await ExecuteCaseAsync(testCase.Name, async () =>
100100
}
101101

102102
[Test]
103-
public async Task DisableSkiaHarfBuzzRuntimeCopy_AffectsBuildAndPublishOutputs_WinX64()
103+
public async Task DisableSkiaHarfBuzzRuntimeCopy_AffectsPublishOutputs_WinX64()
104104
{
105105
SwitchRuleCase[] cases =
106106
[
107-
new("net10_build_default", "build", DisableSkiaHarfBuzzRuntimeCopy: null, ExpectNativeRuntimeCopy: false),
108-
new("net10_build_copy-switch-false", "build", DisableSkiaHarfBuzzRuntimeCopy: false, ExpectNativeRuntimeCopy: true),
107+
new("net10_publish_default", "publish", DisableSkiaHarfBuzzRuntimeCopy: null, ExpectNativeRuntimeCopy: false),
109108
new("net10_publish_copy-switch-false", "publish", DisableSkiaHarfBuzzRuntimeCopy: false, ExpectNativeRuntimeCopy: true)
110109
];
111110

tests/HostForge.TestInfra/TestProjectWorkspace.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ private static void BuildProjectFile(
100100
"RestoreAdditionalProjectSources",
101101
"$(RestoreAdditionalProjectSources);$(AvaloniaAppHostPackageOutputDir)");
102102

103+
propertyGroup.AddProperty("DetectAvaloniaDesigner", "false");
104+
103105
if (disableSkiaHarfBuzzRuntimeCopy is not null)
104106
{
105107
propertyGroup.AddProperty(

0 commit comments

Comments
 (0)