如何在.NET 6与.NET Framework 4.7.2项目间共享领域模型
跨.NET版本共享领域模型的可行方案
1. 多目标框架类库
创建一个多目标类库项目,在.csproj文件中同时指定.NET Framework 4.7.2和.NET 6作为目标框架,编译后会生成适配两个版本的程序集,打包成NuGet包即可被两个项目同时引用:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFrameworks>net472;net6.0</TargetFrameworks> </PropertyGroup> </Project>
若模型代码存在框架专属逻辑,可通过条件编译指令区分:
#if NET472 // .NET Framework 4.7.2 专属实现 #elif NET6_0 // .NET 6 专属实现 #endif
2. 拆分纯DTO层
如果领域模型包含较多框架依赖的业务逻辑,可拆分出仅包含数据结构的DTO(数据传输对象)层,用多目标类库维护这部分DTO。两个项目各自实现领域模型的业务逻辑,Web API通信时共用DTO作为契约,既保证模型一致,又隔离框架差异。
3. 代码生成工具
借助代码生成工具从基准模型自动生成适配两个框架的代码:
- 用
dotnet tool install --global dotnet-svcutil,基于Web API的OpenAPI文档,分别为两个项目生成对应版本的客户端模型; - 维护一份核心模型的C#文件,通过MSBuild任务在编译时针对不同框架做少量调整后嵌入项目。
4. .NET Standard 2.0类库
创建目标为**.NET Standard 2.0**的类库,因为.NET Framework 4.7.2和.NET 6均支持该标准。将领域模型放在这个类库中,只要代码不依赖超出.NET Standard 2.0的API,就能同时被两个项目引用。注意需确认Sitecore项目对.NET Standard类库的兼容性,部分Sitecore API可能存在特殊限制。
内容的提问来源于stack exchange,提问作者9_9
相关产品推荐
相关产品推荐

