在开发基于 .NET Core 3 的 WPF 程序的过程中,有了将 Converter 和 Formatter 等工具类封装到另一个类库中以便于重用的需求。
于是,在新建 .NET Core 类库之后,将类文件复制进入,编译时报错 System.Windows.Data 无法访问!
可新建的类库和原 WPF 的程序以来的框架都 是 Microsoft.NETCore.App ,这就奇怪了。
原来,在类库的描述文件中,需明确指定 SDK 的类型,如下:
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<UseWPF>true</UseWPF>
</PropertyGroup>
</Project>
解决方法:
1.将 <Project Sdk="Microsoft.NET.Sdk"> 改为 <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
2.在 PropertyGroup 节点内加入 <UseWPF>true</UseWPF>
另外,在 ASP.NET Core 3.0 web 项目中也会有此类问题,也一样将 <Project Sdk="Microsoft.NET.Sdk"> 改为 <Project Sdk="Microsoft.NET.Sdk.Web">
如果,类库被编译输出为 可执行文件 ,可能是因为 OutputType 默认会被设置为 Exe,需要在 PropertyGroup 节点内修改或者加入 <OutputType>Library</OutputType> ,定义其输出为类库即可解决!