2008-12-31 60 views
5

看起來,如果您嘗試引用Office COM對象(就像您在其他開發環境中那樣),Visual Studio會出錯 - and it just won't work我是否必須強制客戶安裝Office Xxxx主互操作程序集?

因此,您必須使用Microsoft手動轉換的轉換類型庫,並使其可用於downloaddownloaddownload

現在看來,爲了讓我的應用程序運行,它需要包含在程序集中的Office Interop代碼。

現在我不想強制客戶安裝Office 2007主互操作程序集,Office 2003主互操作程序集或Office XP主互操作程序集。我想要一個xcopy部署。

如果我設法弄到微軟的互操作程序集副本,我可以通過Bin/Debug和Bin/Release文件夾複製它們嗎?

如果我包含Office 2007互操作程序集,如果客戶安裝了Office 95,它會工作還是必須包含所有版本的Office Interop dll的Microsoft發佈過?

回答

4

這是一個相當複雜的答案的常見問題。 MSFT的瑪麗李是有關這個偉大的資源:

http://blogs.msdn.com/vsto/archive/tags/Deployment/default.aspx

使用ClickOnce部署的是你會得到一個安裝的XCopy建立在VSTO任何應用程序的最接近的一次。

此外,還要檢查這個帖子:

http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/1666d2b0-a4d0-41e8-ad86-5eab3542de1e/

最後,米莎有很大的博客:

http://blogs.msdn.com/mshneer/archive/2006/01/05/deployment-articles.aspx

的PIA的是特定於你的目標的Office版本,所以2003年的PIA是瞄準2003年所必需的,而2007年的PIA是2007年所必需的。通過託管代碼實現Office 95自動化是我以前沒有做過的事情,但我可以想象你直接參考了爲類型庫創建一個RCW,並且與PIA無關。

HTH

科爾比非洲(MSFT)

0

如果我設法得到的互操作程序集微軟的拷貝一抱,我可以把它們複製到由濱/調試和斌/釋放文件夾?

它爲我工作。當我編譯程序時,我已經將它引用到bin中的interop(PIA)dll,然後以這種方式將其部署到客戶。

如果我包含Office 2007互操作程序集,如果客戶安裝了Office 95,它會工作嗎?

不,你最好有你所定位的Word版本的interop dll。我想可能可以編寫代碼,以便在該機器上運行運行的單詞版本,並在運行時選擇正確的interop,但需要將它們全部包含在內。

2

從我自己的經驗:

如果你想針對Office 2003和上面,然後你會使用Office 2003 PIA的 - 與自己限制到Office 2003的API。該代碼將在Office 2003上運行或更高版本。您仍然可以使用反射調用Office 2007函數,但這並不令人愉快。

我想這是大同小異的故事,如果你的基線版本的Office 2000 - 雖然我還沒有嘗試過,而且我相信微軟自己提供PIA的是Office 2002中(XP)的最早版本。

您可以創建自己的Interop組件2000年,我已經沒有理由相信,你不能爲'95做到這一點,雖然你是我見過的第一人問'95支持!不言而喻,如果您創建自己的Interop程序集,則需要將它們與您的應用程序一起部署。

在任何情況下,您都希望使用最高的辦公版本作爲您的基準,這樣您就可以支持儘可能多的功能,而無需訴諸反思。您應該在具有的機器上開發您的代碼,只有安裝了該版本的Office。

在我的情況下,我開發的是Office 2003,並且知道我的用戶也有2003.因此,我要求他們確保他們已啓用「.NET可編程性支持」功能(您可以通過Office 2003安裝程序通過添加/刪除程序,如果您選擇更改選項)。該選項基本上將PIA安裝到GAC。對於那些不能這樣做的用戶,我的安裝程序會檢測到缺少PIA並在安裝我的應用程序之前安裝它們(就像它爲.NET框架一樣)。

XCOPY部署?是的,我也想那樣 - 但忘記了。首先,如果你的加載項要在'高'安全模式下工作,那麼你需要一個代碼簽名的COM'shim'來放在代碼和Office之間,並且需要註冊。我相信如果你選擇沿着這條路走下去(我沒有,因爲我需要能夠從頭開始'驅動'Office而不是依靠用戶來啓動應用程序),VSTO提供了自己的墊片。

部署 - 並處理安裝&安全問題 - 是.NET的Office Add-in開發中最難的部分之一,它是一個真正的推動者,它在最後完成時就認爲你已經完成。

我的建議是節省你自己的幾天和幾周的麻煩,並看看Add-in Express。我最近才碰到過這個問題,自那以後一直在踢我自己,因爲它能爲我節省很多時間。它有幾個好處,我覺得這是對你有用:

  1. 它允許你創建一個單一的外接靶向的Office 2000到Office 2007(對不起,不是95年),不管你發生什麼版本的有你的開發電腦。
  2. 它爲您創建一個安裝程序(甚至可以在Vista上運行!),這本身就是值得的。
  3. 它帶有自己的COM墊片,並集成到你不需要擔心它的程度。
  4. 它可以讓你有一個單獨的加載項,在Office版本高達2003的菜單/工具欄界面,但在2007年絲帶接口。

請注意,我與Add-in Express沒有聯繫(不是最近的客戶),但同樣我還沒有將我的項目轉換爲使用它。我所做的初步測試讓我相信這是相當不錯的 - 而絕對是中小型項目的選擇。

+0

+1用於提及加載項快遞。另一點我想提到的是,您可以創建自定義任務窗格,針對Excel 2000到2003.所有這些都以非常合理的價格提供。一個開源的替代品(雖然沒有多少裝飾),你可能想看看的是Excel DNA,這也是非常好的。注意:我不以任何方式附屬於Add-in express或ExcelDNA項目(除了使用它們) – quixver 2012-06-11 14:13:11

相關問題