param( [Parameter(Mandatory = $true)] [string]$ProjectDir, [Parameter(Mandatory = $true)] [string]$NuGetSource, [string]$StaticLinkVersion = "", [string]$AvaloniaVersion = "11.3.14", [string]$StaticLinkNativeVersion = "" ) $ErrorActionPreference = "Stop" New-Item -ItemType Directory -Path $ProjectDir -Force | Out-Null $nativeReference = "" if ($StaticLinkNativeVersion) { $nativeReference = "`n " } $staticLinkReference = "" if ($StaticLinkVersion) { $staticLinkReference = "`n " } @" "@ | Set-Content -Path (Join-Path $ProjectDir "NuGet.config") -Encoding UTF8 @" WinExe net10.0 enable enable true true true true true false true $staticLinkReference$nativeReference "@ | Set-Content -Path (Join-Path $ProjectDir "AvaloniaStaticLinkSmoke.csproj") -Encoding UTF8 @" using Avalonia; namespace AvaloniaStaticLinkSmoke; internal static class Program { [STAThread] public static void Main(string[] args) => BuildAvaloniaApp().StartWithClassicDesktopLifetime(args); public static AppBuilder BuildAvaloniaApp() { var builder = AppBuilder.Configure() .UsePlatformDetect() .LogToTrace(); if (OperatingSystem.IsMacOS()) { builder = builder.With(new AvaloniaNativePlatformOptions { RenderingMode = [AvaloniaNativeRenderingMode.Software] }); } return builder; } } "@ | Set-Content -Path (Join-Path $ProjectDir "Program.cs") -Encoding UTF8 @" using Avalonia; using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Markup.Xaml; namespace AvaloniaStaticLinkSmoke; public sealed partial class App : Application { public override void Initialize() { AvaloniaXamlLoader.Load(this); } public override void OnFrameworkInitializationCompleted() { if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) { desktop.MainWindow = new MainWindow(); } base.OnFrameworkInitializationCompleted(); } } "@ | Set-Content -Path (Join-Path $ProjectDir "App.axaml.cs") -Encoding UTF8 @" "@ | Set-Content -Path (Join-Path $ProjectDir "App.axaml") -Encoding UTF8 @" using Avalonia.Controls; namespace AvaloniaStaticLinkSmoke; public sealed partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } } "@ | Set-Content -Path (Join-Path $ProjectDir "MainWindow.axaml.cs") -Encoding UTF8 @" "@ | Set-Content -Path (Join-Path $ProjectDir "MainWindow.axaml") -Encoding UTF8