You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

.NET Framework与.NET Core引用.NET Standard库及跨平台代码共享问题咨询

跨.NET Framework与.NET Core共享Blob存储库的问题解答

问题1:.NET Framework和.NET Core能否引用.NET Standard库?

答案是可以,但要注意版本兼容性

  • .NET Framework 4.7.1 仅完美支持 .NET Standard 2.0,它并不支持.NET Standard 2.1(.NET Framework后续版本没有更新对2.1的支持)。
  • .NET Core 2.1 同样支持.NET Standard 2.0,但对2.1的支持也有限(.NET Core 3.0及以上才全面支持2.1)。

你最后能成功编译,大概率是你的.NET Standard 2.1库没有使用任何2.1特有的API,Visual Studio做了兼容处理。更稳妥的做法是把你的.NET Standard库版本降到2.0,这样能确保.NET Framework 4.7.1和.NET Core 2.1都能无阻碍引用。

问题2:是否存在.NET Core与.NET Framework之间共享代码的方法,还是我只能创建重复的库?

当然不用重复创建库,有两种主流的跨平台共享方案:

  • 使用.NET Standard库:这是官方推荐的跨平台代码共享方案,只要选对兼容的版本(比如2.0适配你的两个项目),就能让两类项目直接引用同一个库,实现代码复用。
  • 多目标框架(Multi-targeting):如果你的代码需要针对.NET Framework和.NET Core做一些平台特定的实现,可以在同一个库项目中设置多个目标框架(比如同时指定net471netcoreapp2.1),然后用条件编译指令(比如#if NET471)区分不同平台的逻辑,这样只需要维护一个项目即可。

补充你自己发现的解决细节

编辑:我终于找到了在Blob存储.NET Standard项目中引用.NET Standard模型项目时出错的原因——我需要直接添加项目引用。我已经很久不需要手动操作这个了,在.NET Framework项目中Visual Studio会自动帮我添加。

编辑2:看来是我疏忽了,我最终发现还需要手动为.NET Core项目添加该库的项目引用,现在项目已经可以编译了。感谢大家。

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

火山引擎 最新活动