【问题标题】:What is a WPF Library (.NET Core) project target [closed]什么是 WPF 库(.NET Core)项目目标 [关闭]
【发布时间】:2020-06-17 23:06:01
【问题描述】:

我拥有面向 .NET Framework 4.8 的“实用程序”类库的源代码。我想将其移植到 .NET Core 桌面客户端应用程序中,并将其移植到 .NET Core Web 服务中。

我知道新的.NET Core 项目有一种被描述为 SDK 风格的新项目文件。似乎可以验证 VS 是否使用新样式,因为项目文件的第一行提到了“sdk”一词,并且 Visual Studio 右键单击​​项目允许编辑项目文件。 try-convert conversion tool 被描述为不完整且不受支持,因此我将源代码文件粘贴到项目中。

当我将源代码粘贴到 Class Library (.NET Core) 项目中时,它无法针对缺少的程序集进行编译。似乎无法添加对 PresentationFramework.dll 中的 System.Windows.Documents.FlowDocument 等 Microsoft 类的引用。我只能添加 COM 引用(不是我想要的)或项目引用(换句话说,“自制”,不是微软,不是我想要的)。

当我将源代码粘贴到 WPF Library (.NET Core) 项目中时,它会编译。这个库没有 WPF 功能,因为它充满了实用程序类和实用程序方法,所以这种项目类型似乎是一个奇怪的选择。我只是猜测它可能会起作用,因为 tutorial 提到手动编辑 WPF 应用程序和 Windows 窗体应用程序的项目文件。它不会告诉您任何非应用程序的替代品。换句话说,本教程没有提到库。

编辑:以下问题被编辑为比原始问题“不那么广泛”。

为什么WPF Library (.NET Core) 成功而Class Library (.NET Core) 失败?

详情:Visual Studio 2019 社区

解决方案:“类库”在面向 .NET Framework 4.8 时有效,但现在在面向 .NET Core 时必须选择“WPF 库”。正如@DavidAWhite 所说,FlowDocument 是 WPF 的一部分。

【问题讨论】:

  • 通过一些调整,很多端口都可以工作,但是如果您使用已折旧的 3rd 方库或其他库,那么这可能会成为一个问题,但是即使这样,也可以通过一些调整来获得它们“有时”工作。但是,这个问题太宽泛了
  • @TheGeneral ,它没有被弃用,也没有被第 3 方。如果我想创建一个 .DLL,自然的选择是“类库”,所以这值得解释。

标签: c# wpf visual-studio


【解决方案1】:

.NET Core 类库没有任何对 WPF 或类似内容的引用。那会太多而且不便携。与 .NET Standard 类库不同,您可以引用 WPF、ASP.NET Core 3.x、Winforms 或 .NET Standard 2.x 的其他部分,它们不属于任何 .NET Framework 或 Mono 实现。

您可以通过在 csproj 文件中使用 <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"><UseWpf>true</UseWpf> 来创建 .NET Core 类库引用 WPF。

不管你喜欢与否System.Windows.Documents.FlowDocument WPF 的一部分,这是你现在引用所有框架提供的 WPF 组件的方式。

【讨论】:

  • 我不想引用 WPF。这是一组通用实用程序。
  • @H2ONaCl 很公平。这取决于您要定位的目标。
  • 当我使用“类库”时它不起作用。
  • @H2ONaCl 什么不起作用? System.Windows.Documents.FlowDocument 是 WPF 的一部分,不管你喜欢与否
  • 当然也有人担心选择WPF库作为项目类型的变通方法会带来什么副作用。
猜你喜欢
  • 1970-01-01
  • 2017-08-13
  • 1970-01-01
  • 2012-02-17
  • 1970-01-01
  • 2018-02-02
  • 2018-03-29
相关资源
最近更新 更多