如何将 automapper 与 System.AddIn 一起使用?

How do I use automapper with System.AddIn?

在 System.AddIn(又名 MAF)管道适配器中,有很多手动将值从一种 DTO 类型复制到另一种 - 从 HostView 类型到 Pipeline Contract 类型以及从 Pipeline Contract 类型到 AddIn 视图类型(然后再返回)。这似乎是使用自动映射器的理想情况。

但是我不确定在 HostView 和 AddInView 适配器中使用和打包第 3 方程序集的正确方法,尤其是当 AddIn 激活在单独的 AppDomain 中时。

我尝试了以下方法:

通过这种安排,我能够在我的开发箱 (win 7) 上找到并激活插件。但是完全相同的二进制文件不能在 Server2008R2 上运行。 (我知道,我知道:开发还是服务器的选择,我不掌控OS)

我们正在使用(和目标).Net 4.5.1 - 是的,它在桌面和服务器上。我们正在使用 automapper 2.2.1 - 不,它不在我的开发箱的 GAC 中

适配器使用的第 3 方程序集应位于何处(AddIn 端和主机端)。特别是在考虑 AppDomain 隔离时

为什么上述安排适用于 Windows 7,但不适用于 2008R2?

在主机端,它应该位于应用程序的根输出目录中。所有主机 dll 都加载到您的应用程序域中,程序集解析器将在您的 运行ning 程序集的位置查找自动映射器 dll。

在插件方面,它应该位于插件适配器目录中。加载项适配器和加载项视图加载到新的应用程序域中,并且需要它们自己的此 dll 副本。

在管道中的任何地方使用第三方库时要注意的一件事是,它会使管道的版本控制变得痛苦。如果您正在加载多个版本的管道以允许 V1 和 V2 插件仍然工作,如果它们依赖于不同版本的程序集,您可能 运行 在协调这个问题时遇到问题。如果您不关心管道版本控制,那么这不是一个问题。