我正在尝试使用xml文件来确定哪些outlook属性应该包含在通过VSTO插件代码执行的工作流中。
示例
xml可能会声明工作流程需要当前Subject
的{{1}}。我无法使用反射来使用其字符串名称“Subject”获取Outlook.MailItem
属性,因为Subject
是一个接口而不是一个类。
我认为解决方案可能是创建和编译动态C#代码,该代码按名称返回所需的属性...
问题:我一直无法找到如何查找正在运行的Microsoft.Office.Interop.Outlook.dll的位置,以便我可以将其添加为动态编译器的引用。我尝试了很多种组合,最后的努力如下所示。
MailItem
答案 0 :(得分:1)
parameters.ReferencedAssemblies.Add("Microsoft.Office.Interop.Outlook.dll");
答案 1 :(得分:0)
我现在有了答案。 abatishchev让我有信心知道应该做什么,所以我尝试将office dll的编译器包含路径设置为CompilerOptions
。
我仍然需要弄清楚如何为当前版本的outlook获取此路径,但这听起来并不难,或者我可能会为它开一个新问题:)
这是有效的代码。
parameters.ReferencedAssemblies.Add("Microsoft.Office.Interop.Outlook.dll");
parameters.CompilerOptions = "/lib:\"C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\Visual Studio Tools for Office\\PIA\\Office14\"";`
感谢abatishchev的所有帮助
更新:Outlook插件使用嵌入式互操作程序集导致此问题。因此无法从加载的程序集中确定office dll位置。 / lib路径需要通过其他方式解决。