.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做一些平台特定的实现,可以在同一个库项目中设置多个目标框架(比如同时指定
net471和netcoreapp2.1),然后用条件编译指令(比如#if NET471)区分不同平台的逻辑,这样只需要维护一个项目即可。
补充你自己发现的解决细节
编辑:我终于找到了在Blob存储.NET Standard项目中引用.NET Standard模型项目时出错的原因——我需要直接添加项目引用。我已经很久不需要手动操作这个了,在.NET Framework项目中Visual Studio会自动帮我添加。
编辑2:看来是我疏忽了,我最终发现还需要手动为.NET Core项目添加该库的项目引用,现在项目已经可以编译了。感谢大家。
内容的提问来源于stack exchange,提问作者user9593650




