Blazor Server引用.NET Framework项目缺失依赖DLL问题求助
问题原因与解决方案
核心原因
- PresentationCore是.NET Framework专属组件:它是WPF桌面应用的核心依赖,仅存在于Windows平台的.NET Framework运行时环境中。Blazor Server基于跨平台的.NET 6(.NET Core体系),这个运行时本身不包含PresentationCore,也不支持加载这类仅适配桌面环境的.NET Framework专属库。
- System.ServiceModel的依赖体系差异:在.NET Framework里System.ServiceModel是内置组件,但.NET 6将其拆分到了独立的NuGet包中,默认不会自动引入,因此直接引用.NET Framework编写的Common库时,运行时找不到对应的实现。
WPF应用能正常执行是因为它本身基于.NET Framework运行,环境完全匹配,自然能找到这些依赖组件。
可行解决办法
- 拆分Common项目:把依赖PresentationCore的WPF专属代码和通用业务逻辑拆分开,单独做一个适配WPF的类库;再新建一个目标框架为.NET Standard 2.0或.NET 6的通用类库(不含任何桌面专属依赖),让Blazor Server只引用这个通用类库。
- 替换System.ServiceModel依赖:如果Common里用到了WCF相关功能,在Blazor Server项目中安装对应的NuGet包,比如
System.ServiceModel.Primitives、System.ServiceModel.Http,用这些.NET 6兼容的包替代.NET Framework的内置组件。 - 移除Blazor中的WPF专属逻辑:PresentationCore里的API多和桌面UI、图形渲染相关,Blazor Server的服务器端环境完全不支持这些功能,就算强行加载也会报错,所以必须确保Blazor调用的代码路径里完全没有这部分逻辑。
内容的提问来源于stack exchange,提问作者Marcin
相关产品推荐
相关产品推荐

