有没有办法让.net Framework 3.5为目标框架的项目使用.net standard 2.0为目标框架的dll

Killer Dark 40 信誉分
2024-10-15T06:23:27.76+00:00

微软的登录和商店可加载项信息都是要求.net framework 4.6之后目标框架,当前项目使用的.net 3.5,并且打算尽量不升级项目所需.net框架。

经过一些调整.net 3.5的项目引入standard 2.0的dll之后不会报错,也能在一定程度上交换数据和互相调用,但是在生成项目时出现很多standard 2.0的dll引用库的警告提示“未能解析主引用XXX,因为它对 .NET Framework 程序集'XXXX'具有间接依赖关系,而该程序集的版本为'4.0.0.0',高于当前目标框架中的版本'2.0.0.0'”,并且生成失败。

正常引用的方式不行,也尝试了下.net 3.5的项目用反射调用standard 2.0的相关方法,结果加载的时候提示“生成此程序集的运行时比当前加载的运行时新,无法加载此程序集”。

请问还有什么办法可以在不升级.net 3.5的情况下使用.net standard 2.0/.net core 2.0/.net Framework 4.6.2为框架的dll吗?或者指引一条.net Framework 3.5可使用微软登录和商店相关sdk的办法也可以。

Windows
Windows
Microsoft 操作系统系列,可跨个人计算机、平板电脑、笔记本电脑、手机、物联网设备、独立混合现实头戴显示设备、大型协作屏幕和其他设备运行。
424 个问题
.NET
.NET
基于 .NET 软件框架的 Microsoft 技术。
63 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Jiale Xue - MSFT 46,456 信誉分 Microsoft 供应商
    2024-10-15T09:10:56.72+00:00

    Hi @Killer Dark,

    如果升级框架确实不现实,可以尝试将使用 .NET Standard 2.0/.NET Core 2.0/.NET Framework 4.6.2 的逻辑放在一个独立的应用程序或服务中,作为中间层:

    WCF Web Services 或 REST API:将使用微软登录或商店相关 SDK 的逻辑移到一个单独的应用程序中,构建一个基于 WCF 或 REST API 的服务层。你的 .NET 3.5 项目可以通过 Web 服务或 HTTP 请求与该服务进行交互,从而间接使用这些库。

    外部命令行工具:你也可以创建一个独立的命令行工具(可以是 .NET Framework 4.6+ 或 .NET Core),这个工具负责处理 SDK 的调用,并通过进程间通信(如文件、命令行参数或管道)与 .NET 3.5 项目进行数据交换。

    这种方式虽然增加了一些复杂度,但可以避免直接升级项目的框架。


    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。

    注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    1 个人认为此答案很有帮助。
    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。