ASP.NET Core 解决方案是否可以包含具有不同目标框架的项目?

2024-01-11

Like so:

一种解决方案(我认为这一定是 ASP.NET Core?)

  • 项目1.目标框架是.NET Core 2.1
  • 项目2。目标框架是.NET Framework 4.5.1。处理数据访问的类库。我问的原因是项目 2 包含我们目前没有时间迁移的遗留依赖项。

该解决方案与所使用的目标框架无关。目标框架适用于项目,因此您可以在解决方案中为每个项目设定不同的目标,并且从解决方案的角度来看,这对于抢占并不重要。

当您具有项目依赖性时就会出现问题。为了依赖于针对不同框架的项目,所使用的所有框架必须以某种方式彼此兼容。例如,您可以从 .NET 4.7 项目引用 .NET 4.6 项目,因为最终 .NET 4.7 是 4.6 的超集。

更直接地谈论 .NET Core 和您的场景,特别是,不,您不能从 .NET Core 2.1 项目引用 .NET 4.5.1 项目,but您可以参考.NET 4.6.1项目。这里的问题是 .NET Core 处理 .NET Framework 依赖项的能力依赖于 .NET Standard。 .NET Standard 2.0 是第一个支持 .NET Core 和 .NET Framework 之间互操作的版本,至少需要 .NET Core 2.0 和 .NET Framework 4.6.1。如果您可以将该项目定位到至少 4.6.1,那么是的,您可以引用它。

但是,.NET Framework 包含 .NET Standard 不包含的内容,因此 .NET Core 也不包含这些内容。尽管 Visual Studio 允许您添加引用,但它并不保证该库的全部甚至部分内容都可以actually被利用。事实上,在添加引用后,您会收到有关此效果的警告。您需要验证依赖项是否正常工作,然后您可以在此时抑制警告。

大多数情况下,会让您陷入困境的是特定于平台的 Windows API。例如,System.Drawing是一个问题,因为 .NET Core 是跨平台的,其中System.Drawing使用特定于 Windows 的 API。在某些情况下,只要您的应用程序与 Windows 保持紧密联系,您仍然可以使用这些不兼容的库。再次使用System.Drawing例如,有一个 CoreCompat 包允许您使用System.Drawing来自 .NET Core 项目,这意味着您可以利用使用以下内容的库System.Drawing只要你构建并运行在 Windows 上。如果您尝试将您的应用程序移植到 Linux,它就会崩溃。不过,您可以使用编译器指令专门为 Linux 和 Mac 填充不同的代码来进行补偿。

长话短说,这里没有硬性的“是”或“否”答案。您需要进行一些广泛的测试,以确保一切正常工作。如果事情真的破裂了,你may能够通过 Microsoft 的兼容包之一进行填充支持,但在替换需要该功能的代码之前,您将无法离开 Windows。这为您的升级提供了一些喘息的空间,但不要指望您会仅仅因为它允许您添加依赖项而获得 .NET Core 的所有承诺和吸引力。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET Core 解决方案是否可以包含具有不同目标框架的项目? 的相关文章

  • 32 位应用程序的特征最大矩阵大小

    所以 我正在寻找Eigen http eigen tuxfamily org index php title Main Page当我尝试声明大于 10000x10000 的矩阵时 包崩溃 我需要声明一个像这样的矩阵 可靠地大约有 13000
  • Clang 编译器 (x86):80 位长双精度

    我正在尝试在 x86 Windows 平台上使用本机 80 位长双精度 海湾合作委员会选项 mlong double 80 https gcc gnu org onlinedocs gcc x86 Options html似乎不适用于 cl
  • 如何使用recv()检测客户端是否仍然连接(并且没有挂起)?

    我写了一个多客户端服务器程序C on SuSE Linux 企业服务器 12 3 x86 64 我为每个客户端使用一个线程来接收数据 我的问题是 我使用一个终端来运行服务器 并使用其他几个终端来运行服务器telnet到我的服务器 作为客户端
  • App_Data 文件夹内的数据库与连接到 SQL Server 的数据库有什么区别?

    我是 NET 新手 在开始学习 ASP NET MVC2 框架时 我发现您可以在 App Data 文件夹中创建一个 mdf 文件并连接到它 或者您可以连接到 SQL Server 这些与数据库交互的方法有什么区别 一种相对于另一种的优点
  • 从多个类访问串行端口

    我正在尝试使用串行端口在 arduino 和 C 程序之间进行通信 我对 C 编程有点陌生 该程序有多种用户控制形式 每一个都需要访问串口来发送数据 我需要做的就是从每个类的主窗体中写入串行端口 我了解如何设置和写入串行端口 这是我的 Fo
  • 如何从 C# 控制器重定向到外部 url

    我使用 C 控制器作为网络服务 在其中我想将用户重定向到外部网址 我该怎么做 Tried System Web HttpContext Current Response Redirect 但没有成功 使用控制器的重定向 http msdn
  • 检查算术运算中的溢出情况[重复]

    这个问题在这里已经有答案了 可能的重复 检测 C C 中整数溢出的最佳方法 https stackoverflow com questions 199333 best way to detect integer overflow in c
  • 如何识别 WPF 文本框中的 ValidationError 工具提示位置

    我添加了一个箭头来指示工具提示中的文本框 当文本框远离屏幕边缘时 这非常有效 但是当它靠近屏幕边缘时 工具提示位置发生变化 箭头显示在左侧 Here is the Image Correct as expected since TextBo
  • 有没有办法处理asp.net core odata错误

    有没有办法处理 asp net core odata 错误 我有一个模特班DimDateAvailable具有一个属性 主键为int DateId 然后我打电话 data DimDateAvailable select test 其他调用按
  • 为什么我不应该对不是由 malloc() 分配的变量调用 free() ?

    我在某处读到 使用它是灾难性的free删除不是通过调用创建的对象malloc 这是真的 为什么 这是未定义的行为 永远不要尝试它 让我们看看当您尝试时会发生什么free 自动变量 堆管理器必须推断出如何获取内存块的所有权 为此 它要么必须使
  • 通过 NHibernate 进行查询,无需 N+1 - 包含示例

    我有一个 N 1 问题 我不知道如何解决它 可以在这个问题的底部找到完全可重复的样本 因此 如果您愿意 请创建数据库 设置 NUnit 测试和所有附带的类 并尝试在本地消除 N 1 这是我遇到的真实问题的匿名版本 众所周知 这段代码对于帮助
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • 当“int”处于最大值并使用 postfix ++ 进行测试时,代码定义良好吗?

    示例 未定义行为的一个示例是整数溢出的行为 C11dr 3 4 3 3 int溢出是未定义的行为 但这是否适用于存在循环的以下内容 并且不使用现在超出范围的副作用i 特别是 这是否后缀增量规格帮助 结果的值计算在副作用之前排序 更新操作数的
  • 如何一步步遍历目录树?

    我发现了很多关于遍历目录树的示例 但我需要一些不同的东西 我需要一个带有某种方法的类 每次调用都会从目录返回一个文件 并逐渐遍历目录树 请问我该怎么做 我正在使用函数 FindFirstFile FindNextFile 和 FindClo
  • 在类的所有方法之前运行一个方法

    在 C 3 或 4 中可以做到这一点吗 也许有一些反思 class Magic RunBeforeAll public void BaseMethod runs BaseMethod before being executed public
  • 剪贴板在 .NET 3.5 和 4 中的行为有所不同,但为什么呢?

    我们最近将一个非常大的项目从 NET Framework 3 5 升级到 4 最初一切似乎都工作正常 但现在复制粘贴操作开始出现错误 我已经成功制作了一个小型的可复制应用程序 它显示了 NET 3 5 和 4 中的不同行为 我还找到了一种解
  • 转到定义:“无法导航到插入符号下的符号。”

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我今天突然开始在我的项目中遇到一个问题 单击 转到定义 会出现一个奇怪的错误 无法导航到
  • 运算符“==”不能应用于“int”和“string”类型的操作数

    我正在编写一个程序 我想到了一个数字 然后计算机猜测了它 我一边尝试一边测试它 但我不断收到不应该出现的错误 错误是主题标题 我使用 Int Parse 来转换我的字符串 但我不知道为什么会收到错误 我知道它说 不能与整数一起使用 但我在网
  • 使用 Crypto++ 获取 ECDSA 签名

    我必须使用 Crypto 在变量中获取 ECDSA 签名 我在启动 SignMessage 后尝试获取它 但签名为空 我怎样才能得到它 你看过 Crypto wiki 吗 上面有很多东西椭圆曲线数字签名算法 http www cryptop
  • 是否可以在 C# 中强制接口实现为虚拟?

    我今天遇到了一个问题 试图重写尚未声明为虚拟的接口方法的实现 在这种情况下 我无法更改接口或基本实现 而必须尝试其他方法 但我想知道是否有一种方法可以强制类使用虚拟方法实现接口 Example interface IBuilder

随机推荐