2013-01-14 46 views
1

我最近開發了一個小工具,使用Microsoft.Office.Excel.Interop,根據我的References文件夾,我添加了對Microsoft Excel 14.0 Object Library的引用。我還應該提一下,我的機器上有MS Office 2010,所以該工具在那裏工作得很好。C# - 爲MS Excel 12.0對象庫和MS Excel 14.0對象庫添加參考?

但是,我有一個客戶端用戶試圖在他的機器上安裝該工具(顯然他已經安裝了MS Office 2003)並且收到錯誤消息。

我想知道,如果我下載Microsoft Excel 12.0 Object Library並將其引用添加到我的工具中,以便我同時引用MS Excel 14和MS Excel 12,是否會有任何問題? ......這樣做會有意義嗎?

再一次,我對.NET相當陌生,我的編程經驗純粹是經驗性的,就像在沒有學校一樣。如果這是一個愚蠢的問題,那麼只需要提醒一下。

編輯:

我發現的東西,似乎解決了這個問題。我有我的客戶從這個鏈接下載文件:http://www.microsoft.com/en-us/download/details.aspx?id=3508

然後只需按照底部的說明,這顯然解決了這個問題。他能夠安裝該工具並無任何問題地運行它。

+0

你可以嘗試用這種方式別名化命名空間,你將不會遇到版本衝突..並且或者將特定版本複製到Bin文件夾中,或者在特定機器上將Gac複製。 – MethodMan

+0

@DJKRAZE:謝謝!顯然運行此文件也解決了這個問題... http://www.microsoft.com/en-us/download/details.aspx?id=3508 – sergeidave

回答

3

我發現的最佳解決方案是使用虛擬機作爲構建機器,該機器安裝了我所關心的最早版本的Office Interop庫。我遇到了很多問題,試圖在我的開發機器上開發多個互操作版本。

Microsoft確實爲多個辦公室版本提供了構建客戶端的指導,但是我發現對於我的特定用例來說過於麻煩。

http://support.microsoft.com/default.aspx?kbid=244167

您也可以考慮完全使用替代庫,跳過互操作,如開源的EP加。我還沒有親自嘗試過那個,但它看起來很有前途。

http://epplus.codeplex.com/

+0

謝謝埃裏克!我要探索你的建議。 – sergeidave

0

還有的互操作性展示的版本之間的一些差異。如果您將使用在新版本中添加的某些成員,那麼舊版本將無法工作。例如這裏是什麼都在互操作版本14添加的列表:

http://msdn.microsoft.com/en-us/library/office/ff194938(v=office.14).aspx

如果你使用到這些應用程序將無法在舊版本的工作,因爲這些成員不能在較早的版本。