You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Visual Studio中创建C# UWP主项目的轻量子集项目?

最优解决方案

1. 用共享项目复用核心代码

把主项目里的核心业务代码、ViewModel、工具类等全部迁移到一个新的共享项目中。然后创建两个独立的UWP项目:主项目和轻量版项目,让它们都引用这个共享项目。这样核心代码只需要维护一份,两个项目会自动同步所有代码变更。

2. 通过项目文件配置区分资源

针对资源文件和SQLite数据库的差异,直接修改两个UWP项目的.csproj文件来实现区分:

  • 主项目:保留所有资源文件,引用原版SQLite数据库。
  • 轻量版项目:通过配置排除冗余资源,同时引入替换后的轻量版SQLite数据库。

轻量版项目的.csproj配置示例:

<!-- 排除不需要的资源文件 -->
<ItemGroup>
  <Content Remove="Assets\HighResImages\**" />
  <Content Remove="Resources\ExtraLocales\*.resw" />
</ItemGroup>

<!-- 引入轻量版SQLite数据库 -->
<ItemGroup>
  <Content Include="Databases\Lightweight.db">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
</ItemGroup>

3. 条件编译处理细微代码差异

如果有少量代码需要根据版本调整(比如资源加载路径),可以在两个项目的属性中设置不同的编译符号(主项目设FULL_VERSION,轻量版设LIGHT_VERSION),然后在代码中做条件判断:

#if LIGHT_VERSION
    var dbPath = Path.Combine(Package.Current.InstalledLocation.Path, "Databases\\Lightweight.db");
#else
    var dbPath = Path.Combine(Package.Current.InstalledLocation.Path, "Databases\\Full.db");
#endif

4. 进阶:MSBuild目标自动同步资源

如果需要更自动化的资源管理,可以在轻量版项目的.csproj中添加MSBuild目标,自动从主项目同步必要资源并过滤冗余文件:

<Target Name="SyncCoreResources" BeforeTargets="Build">
  <!-- 同步主项目的核心图标资源 -->
  <Copy SourceFiles="..\MainProject\Assets\Icons\**" DestinationFolder="Assets\Icons\" />
  <!-- 删除轻量版不需要的大尺寸图片 -->
  <Delete Files="Assets\HighResImages\**" />
</Target>

内容的提问来源于stack exchange,提问作者Jeffrey Berezin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 18:30:54