- Shared SQLite plumbing: PRAGMAs (WAL/NORMAL/foreign_keys) and user_version migrations with typed SchemaVersionException - Workspace folder: .ykanban initialization, empty schema with DDL-level constraints, preset column seeding (ResX-driven), exclusive lock file with holder diagnostics - AppData folder: app.db workspace registry (injectable clock), app.json config store with kebab-case JSON names via explicit [JsonProperty]/[EnumMember], nested sections, corrupt-file backup - ResX infrastructure under Assets/Locales (en + zh-Hans) with MSBuild strongly-typed public Resources class - 54 unit tests: DDL constraints, migrations, PRAGMAs, lock exclusivity, config degradation, culture-aware presets
51 lines
2.5 KiB
XML
51 lines
2.5 KiB
XML
<Project Sdk="Microsoft.NET.Sdk">
|
|
<PropertyGroup>
|
|
<OutputType>WinExe</OutputType>
|
|
<TargetFramework>net9.0</TargetFramework>
|
|
<ImplicitUsings>enable</ImplicitUsings>
|
|
<Nullable>enable</Nullable>
|
|
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
|
|
<ApplicationManifest>app.manifest</ApplicationManifest>
|
|
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<AvaloniaResource Include="Assets\**" Exclude="Assets\Locales\**" />
|
|
</ItemGroup>
|
|
|
|
<!--Strongly-typed ResX resources generated by the cross-platform MSBuild generator.
|
|
LogicalName is pinned so the manifest names stay stable despite the Assets/Locales location.-->
|
|
<ItemGroup>
|
|
<EmbeddedResource Update="Assets/Locales/Resources.resx">
|
|
<Generator>MSBuild:Compile</Generator>
|
|
<StronglyTypedFileName>$(IntermediateOutputPath)Resources.Designer.cs</StronglyTypedFileName>
|
|
<StronglyTypedNamespace>YKanBan</StronglyTypedNamespace>
|
|
<StronglyTypedClassName>Resources</StronglyTypedClassName>
|
|
<StronglyTypedLanguage>CSharp</StronglyTypedLanguage>
|
|
<PublicClass>true</PublicClass>
|
|
<LogicalName>YKanBan.Resources.resources</LogicalName>
|
|
</EmbeddedResource>
|
|
<EmbeddedResource Update="Assets/Locales/Resources.zh-Hans.resx">
|
|
<LogicalName>YKanBan.Resources.zh-Hans.resources</LogicalName>
|
|
</EmbeddedResource>
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<PackageReference Include="Avalonia" Version="11.3.6" />
|
|
<PackageReference Include="Avalonia.Desktop" Version="11.3.6" />
|
|
<PackageReference Include="Avalonia.Themes.Fluent" Version="11.3.6" />
|
|
<PackageReference Include="Avalonia.Fonts.Inter" Version="11.3.6" />
|
|
<!--Exclude Avalonia.Diagnostics from Release build output.-->
|
|
<PackageReference Include="Avalonia.Diagnostics" Version="11.3.6">
|
|
<IncludeAssets Condition="'$(Configuration)' != 'Debug'">None</IncludeAssets>
|
|
<PrivateAssets Condition="'$(Configuration)' != 'Debug'">All</PrivateAssets>
|
|
</PackageReference>
|
|
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.1" />
|
|
<PackageReference Include="Semi.Avalonia" Version="11.2.1.10" />
|
|
<PackageReference Include="IconPacks.Avalonia.Lucide" Version="2.0.0" />
|
|
<PackageReference Include="Microsoft.Data.Sqlite" Version="9.0.20" />
|
|
<PackageReference Include="Pidgin" Version="3.5.1" />
|
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
|
|
</ItemGroup>
|
|
</Project>
|