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

能否在.NET 5和.NET Framework项目中复用同一C#类?

核心问题解答

首先明确:.NET 5 与 .NET Framework 4.7.2 运行时不兼容,无法直接互相引用项目,以下是3种无冗余代码的实现方案:


方案1:使用.NET Standard 2.0公共类库(最推荐)

.NET Standard 2.0 原生同时支持 .NET Framework 4.6.1+ 和 .NET Core 2.0+ 以及 .NET 5/6/7/8 所有后续版本,是跨框架复用代码的官方标准方案:

  1. 解决方案中新建**类库(.NET Standard)**项目,目标框架选择.NET Standard 2.0
  2. 将所有公共模型类(如ExampleData)迁移到该类库中,若模型使用了Newtonsoft.Json等序列化特性,在该类库中安装对应兼容版本的NuGet包即可
  3. .NET Framework 4.7.2项目和.NET 5项目同时引用这个.NET Standard类库,删除两边重复定义的模型类即可

该方案是编译级别的代码复用,无需修改现有业务逻辑,后续维护公共模型只需要修改一处。


方案2:使用共享项目(Shared Project)

如果不想多维护一个独立发布的类库,可以用共享项目实现源码级复用:

  1. 解决方案中新建共享项目,将公共模型类存入该项目
  2. .NET Framework和.NET 5项目同时添加对该共享项目的引用
  3. 编译时共享项目的代码会自动嵌入到两个项目的编译结果中,无需重复编写类

该方案适合仅需要共享少量POCO模型、不需要单独打包公共类库的场景。


方案3:文件链接(最小改动方案)

如果不想新增项目,可以用文件链接的方式同步源码:

  1. 在任意一个项目中编写ExampleData类的源码
  2. 另一个项目右键选择「添加 -> 现有项」,找到刚才编写的类文件,点击添加按钮旁边的下拉箭头,选择「添加为链接」
  3. 两个项目会共用同一份源码文件,修改时两边会自动同步

额外优化建议

你现有.NET 5代码中每次请求都新建HttpClient的写法会导致端口耗尽问题,建议通过依赖注入注入IHttpClientFactory来创建HttpClient实例,降低资源消耗。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:24:04