.net 将 API 与不同的目标框架结合在一起

Posted

技术标签:

【中文标题】.net 将 API 与不同的目标框架结合在一起【英文标题】:.net incorporating APIs with different target frameworks 【发布时间】:2017-08-26 02:43:13 【问题描述】:

我目前正在开发一个 Windows 窗体应用程序,该应用程序使用仅适用于 .net 框架 3.5 (API #1) 的 API,以及仅适用于 .net 框架 4.0 及更高版本的另一个 API (API #2) (它的目标是 4.5)。有没有办法在我的解决方案中构建项目,以便能够将这两个 API 合并到我的应用程序中?

更多信息...我的启动 windows 窗体项目针对 3.5,API #1 是它引用的 COM 互操作 dll,而针对 4.5 的 api 是输出类型“类库”的多个 c# 项目。

【问题讨论】:

【参考方案1】:

使用早于 2017 版的 Visual Studio 版本,您可以在解决方案中创建两个(或更多)项目。每个都针对不同的框架版本。

(根据您正在开发的内容,最好将源文件放在设置为使用旧框架版本的项目中。但这真的取决于。)

之后,在第二个项目中开始添加指向物理上包含在第一个项目中的源文件的链接。您可以逐个文件或选择多个文件并使用 Alt 键拖动到第二个项目中。通过使用链接,您仍将拥有一个“真实来源”,因为源代码将仅保存在单个物理文件中。

由于不同的框架版本将提供不同的功能,您可能会不得不在源代码中使用条件 (#if #else ...) 来为每个目标框架编译代码。 见:C# preprocessor directives

从 Visual Studio 2017 开始,您可以编辑项目文件并使用新元素“TargetFrameworks”。这样您就可以处理一个项目,并从中获得构建过程的多个输出。

这些链接可能会有所帮助:

How to Multitarget Multi-targeting in Visual Studio 2017 by Peter Ritchie

【讨论】:

以上是关于.net 将 API 与不同的目标框架结合在一起的主要内容,如果未能解决你的问题,请参考以下文章

将构建任务与多目标解决方案一起使用

OKR如何与项目管理相结合

System.Web 可以与具有完整框架的 ASP.Net Core 一起使用吗

同时将实体框架与 SQL Server 和 SQLite 数据库一起使用

不支持将桥接头与框架目标一起使用

不支持将桥接头与框架目标一起使用