|
|
|
|
|
今天更新了一下程序,運(yùn)行時(shí)卻出現(xiàn)了如下提示的錯(cuò)誤:
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ù)提示語句,我知道是因?yàn)槌绦蛞昧薟ord集合(Microsoft.Office.Interop.Word.dll)的原因,但是這個(gè)引用并不是現(xiàn)在才添加,而是很久以前就開始使用了,并且沒有任何問題。
再看看提示語句,說到有兩個(gè)可能原因所致:1、沒有找到文件 2、定位的程序集定義與程序集引用不匹配。
我檢查了一下,該引用文件是在bin文件夾里的,排除了“找不到文件”這個(gè)原因。把鼠標(biāo)移到文件上面,顯示文件版本是12.0,這與錯(cuò)誤報(bào)告里的Version=14.0.0.0是不匹配的,可能就是這個(gè)原因了。
認(rèn)真想了一下,以前之所以沒問題,是因?yàn)楸镜仉娔X安裝的office是2003,跟服務(wù)器上的版本一致,而近期本地安裝的office是2010,所以.net里的引用版本就改變了,跟服務(wù)器上的不一致了。
(這里我有點(diǎn)不明白,我程序引用的是bin文件夾里的文件(Microsoft.Office.Interop.Word.dll)沒有變,為什么編譯后卻變成了本機(jī)安裝的office版本?)
解決方法
知道了原因,解決起來就容易了。我如果在服務(wù)器也安裝office2010,問題就能解決。
但是我覺得安裝office2010非常麻煩,想用簡(jiǎn)單點(diǎn)的方法。于是我就想,能否用版本為14.0的dll文件(Microsoft.Office.Interop.Word.dll)來替換服務(wù)器里程序使用的bin文件夾下的舊文件?
試一試看看。
立即在網(wǎng)上下載該版本的dll(Microsoft.Office.Interop.Word.dll)文件,拷貝到服務(wù)器里程序bin文件夾下,替換舊的文件。
重啟IIS。
運(yùn)行程序。
竟然,成功了!
總結(jié)
解決方法:
1、下載對(duì)應(yīng)版本的dll文件,拷貝到bin目錄。
2、VS編寫程序時(shí)引用這個(gè)文件。
3、最后在實(shí)際應(yīng)用環(huán)境中,也要把此dll文件拷貝到bin目錄下。
4、重啟IIS