在 Office VSTO 解决方案中使用 VB.NET 元组,了解 .NET Framework 4.7+ 依赖项

Using VB.NET Tuples in an Office VSTO solution, understanding .NET Framework 4.7+ dependencies

对于 VB.NET Office VSTO 解决方案,我想开始使用元组。

让我有些担心的是 .NET Framework 方面的这一要求。

VB.NET 直到 .NET Framework 4.7 才支持元组,请参阅 Microsoft 信息 here

我不介意需要 .NET Framework 4.7 或更高版本,但我担心 Office 应用程序中其他 VSTO 插件 运行 的问题(在本例中为 Visio,但也为 Excel) 需要旧版本的 .NET。

到目前为止,我已将解决方案限制为使用 .NET Framework 3.5 兼容功能。我不介意要求安装 .NET Framework 4.7 或更高版本,但我想避免同时 运行 的其他 VSTO 加载项出现问题。

当多个 Office VSTO 加载项同时 运行 但需要不同的 .NET Framework 时会发生什么情况?我在 Microsoft 网站上找不到关于此的明确信息。

感谢您分享您的见解!

您不会有任何问题 - 所有 VSTO 插件 运行 在其自己的环境中具有插件请求的确切版本的 .Net run-time。可以在给定进程 (outlook.exe) 中加载多个版本的 .Net run-time。

VSTO add-ins 运行 在单独的应用程序域中。因此,您的 add-ins 可以使用不同的 .net 框架版本。但是CLR是一样的。我会解释为什么...

The CLR is the same as other DLLs: there is only one copy of the CLR code in RAM. That copy is mapped into the virtual memory pages for each process executing CLR code. Pages containing CLR data (heap etc) are unique per process (and AppDomain).

因此,您不能 运行 同一进程中的多个 CLR 版本(不是 .net 框架版本)。但您可以在宿主应用程序配置文件中配置目标 CLR。​​

If the application configuration file includes entries that specify one or more .NET Framework versions, and one of those versions is present on the user's computer, the app runs on that version. The configuration file reads entries in the order they are listed, and uses the first .NET Framework version listed that is present on the user's computer. (Use the element for version 1.0.)

您会发现 CLR Inside Out - In-Process Side-by-Side 文章很有帮助。