在开发基于 .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> ,定义其输出为类库即可解决!

All Comments

Leave a Reply Cancel Reply

Tips: Your email address will not be disclosed!

If you can't see clearly,please click to change...