按照Hans Passant的建議,我現在回答我自己的問題,並提供解決方案的詳細信息。我能夠在未安裝辦公室的情況下在計算機上編譯和運行我的項目。主要問題是讓visual studio知道,它可以從COM對象期望的接口。這是通過查找主界面組件(PIA)文件來解決的。這個過程在this問題更好地描述,但短期的故事是,我已經在我的電腦上的Office PIA的,在此位置:
C:\Program Files\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA
我用VS2010親,我不知道如果文件包含在其他版本中。然後是將相關文件複製到我的項目源文件夾中,包括它在我的項目和源代碼控制中,並對其進行參考。之後,我可以在我的項目中使用Outlook COM類型,並且無錯地進行編譯。我也能夠在沒有安裝辦公室的情況下運行我的項目。這是通過嘗試實例化相關的COM對象,並在未安裝office的情況下捕獲異常來實現的。以下示例代碼顯示瞭如何:
using Outlook = Microsoft.Office.Interop.Outlook;
namespace Foo
{
public class Bar
{
public void Quux()
{
try
{
// try to instantiate outlook COM object.
Outlook.Application outlookApp = new Outlook.Application();
// if it works, fine. Proceed
...
}
// If we catch a COMException, assume no office installed. Deal accordingly.
catch (System.Runtime.InteropServices.COMException)
{
...
}
}
}
}
Ciao Boris,我擔心你將開發環境與部署環境混合在一起。在開發中你應該引用正確的程序集,這些程序集應該可用於構建代碼。在生產中,您不必構建任何東西,但是您的程序需要安裝Outlook。 – 2011-02-18 12:50:31
@Davide Piras:我認爲你是過度使用你的編輯和重新標記特權... – 2011-02-18 12:52:05