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

Killer Dark 60 信誉分
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 商业版 | 面向 IT 专业人士的 Windows 客户端 | 用户体验 | 其他
开发人员技术 | .NET | 其他
0 个注释 无注释
{count} 票

问题作者接受的答案
  1. 匿名
    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 个其他答案

排序依据: 非常有帮助

你的答案

提问者可以将答案标记为“已接受”,版主可以将答案标记为“已推荐”,这有助于用户了解答案是否解决了提问者的问题。