|
|
|
|
|
今天更新了一下程序,運行時卻出現(xiàn)了如下提示的錯誤:
Exception Details: System.IO.FileLoadException: Could not load file or assembly 'Microsoft.Office.Interop.Word, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
根據(jù)提示語句,我知道是因為程序引用了Word集合(Microsoft.Office.Interop.Word.dll)的原因,但是這個引用并不是現(xiàn)在才添加,而是很久以前就開始使用了,并且沒有任何問題。
再看看提示語句,說到有兩個可能原因所致:1、沒有找到文件 2、定位的程序集定義與程序集引用不匹配。
我檢查了一下,該引用文件是在bin文件夾里的,排除了“找不到文件”這個原因。把鼠標移到文件上面,顯示文件版本是12.0,這與錯誤報告里的Version=14.0.0.0是不匹配的,可能就是這個原因了。
認真想了一下,以前之所以沒問題,是因為本地電腦安裝的office是2003,跟服務(wù)器上的版本一致,而近期本地安裝的office是2010,所以.net里的引用版本就改變了,跟服務(wù)器上的不一致了。
(這里我有點不明白,我程序引用的是bin文件夾里的文件(Microsoft.Office.Interop.Word.dll)沒有變,為什么編譯后卻變成了本機安裝的office版本?)
解決方法
知道了原因,解決起來就容易了。我如果在服務(wù)器也安裝office2010,問題就能解決。
但是我覺得安裝office2010非常麻煩,想用簡單點的方法。于是我就想,能否用版本為14.0的dll文件(Microsoft.Office.Interop.Word.dll)來替換服務(wù)器里程序使用的bin文件夾下的舊文件?
試一試看看。
立即在網(wǎng)上下載該版本的dll(Microsoft.Office.Interop.Word.dll)文件,拷貝到服務(wù)器里程序bin文件夾下,替換舊的文件。
重啟IIS。
運行程序。
竟然,成功了!
總結(jié)
解決方法:
1、下載對應(yīng)版本的dll文件,拷貝到bin目錄。
2、VS編寫程序時引用這個文件。
3、最后在實際應(yīng)用環(huán)境中,也要把此dll文件拷貝到bin目錄下。
4、重啟IIS