如何在动态CSharpCodeProvider脚本中添加对Outlook VSTO的引用

时间:2012-09-08 14:38:30

标签: c# reference outlook vsto csharpcodeprovider

我正在尝试使用xml文件来确定哪些outlook属性应该包含在通过VSTO插件代码执行的工作流中。

示例

xml可能会声明工作流程需要当前Subject的{​​{1}}。我无法使用反射来使用其字符串名称“Subject”获取Outlook.MailItem属性,因为Subject是一个接口而不是一个类。

我认为解决方案可能是创建和编译动态C#代码,该代码按名称返回所需的属性...

问题:我一直无法找到如何查找正在运行的Microsoft.Office.Interop.Outlook.dll的位置,以便我可以将其添加为动态编译器的引用。我尝试了很多种组合,最后的努力如下所示。

MailItem

2 个答案:

答案 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路径需要通过其他方式解决。