Files
YKanBan/YKanBan/YKanBan.csproj
T
yyc12345 31fc58d9c7 feat(m1): storage layer
- 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
2026-10-01 18:17:47 +08:00

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>