如何在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
相关产品推荐
相关产品推荐

