【问题标题】:Can I use any old arbitrary WIndows library in a .net core web app?我可以在 .net 核心 Web 应用程序中使用任何旧的任意 WIndows 库吗?
【发布时间】:2017-03-08 21:42:10
【问题描述】:

我只是不明白为什么我不能在面向 Windows 和完整 .net 框架的 .net Core 应用程序中使用旧库(我不关心多平台)。

只是想了解这里的限制。我不想在投入太多之后碰壁。

后续步骤:

  1. 创建一个新的 .Net core web 应用程序
  2. 从 NuGet 添加了 PetaPoco(只是一个示例)
  3. 无法使用库

【问题讨论】:

  • stackoverflow.com/q/35343435/5311735。无论出于何种原因,PetaPoco nuget 包都不会将文件复制到您的项目中(此包包含源代码 .cs 文件,而不是编译后的 dll)。但即使它确实复制了该文件 - 无论如何它也不会工作,请参阅该答案。
  • @Evk:这与这个特定的参考无关。我只是想了解为什么我不能使用任意 Windows DLL。 (我不关心多平台)
  • 您的问题甚至没有显示您使用 .NET Core。看起来您正在完整的 .NET Framework 上使用 ASP.NET Core。
  • @mason:是的。这就是问题的重点
  • 你的标题说。 NET Core,但您的问题显示了完整的 .NET Framework

标签: c# asp.net asp.net-core


【解决方案1】:

来自您对此问题的已删除答案的评论

这不是关于这个特定的参考。我只是想了解为什么我不能使用任意 Windows DLL。 (我不关心多平台)——Eduardo Molteni

看来您并不太担心为什么这个特定项目不起作用(您评论的已删除答案很好地涵盖了这一点,如果它没有被删除,我会投票赞成)但为什么一般来说您不能在 .NET Core 项目中使用 .NET Framework DLL。

这是一个展示“.NET生态系统”布局的图表

为 .NET Framework 构建的东西不能使用专门为 .NET Core 构建的 DLL,为 .NET Core 构建的东西也不能使用专门为 .NET Framework 构建的 DLL,因为它们是层次结构中的两个“兄弟”。

.NET Framework 和 .NET Core 都可以在其项目中使用 .NET Standard 库,因为 .NET Standard 是框架和核心的“父级”。许多较新的 NuGet 包现在发布了面向 .NET Standard 的版本,因此该库可以与两个版本一起使用。请参阅下表以了解与各种平台兼容的 .NET Standard 库的版本。 netstandard 库是前向兼容的,因此与 1.5 兼容的东西(如 .NET 4.6.2)也与 1.0-1.4 版本兼容

【讨论】:

  • 但是,.Net 标准库它不是一个库,它仍然是 .Net 框架(在这种情况下)。问题是:在能够使用 ASP.Net Core 之前,我是否需要等待世界迁移(重新编译?重新打包?)到 .Net Standard?
  • 如果您依赖的特定工具尚未重新编译,那么可以。
  • 为什么?底层系统仍然是 Windows(谢谢你,很抱歉继续打扰,只是无法理解这个问题)
  • 因为它不一定是windows。如果您正在制作 .NET Core 应用程序,则该应用程序可以在任何支持 .NET Core 的操作系统上运行。对于您为什么 PetaPoco 不起作用的具体案例,Elemental Pete 对此有正确的答案(我希望他取消删除他的答案)
  • 我明白,如果我的目标是 .Net Core,但我正在尝试在完整的 .NET Framework 上做一个 ASP.NET Core 应用程序(如问题第一张图片所示)跨度>
猜你喜欢
  • 2017-02-11
  • 1970-01-01
  • 1970-01-01
  • 2016-11-10
  • 1970-01-01
  • 1970-01-01
  • 2019-07-17
  • 1970-01-01
  • 2020-05-29
相关资源
最近更新 更多