我有一個使用Oracle客戶端(特別是Oracle.DataAccess)的小型命令行應用程序。我的開發計算機上安裝了2.11.7.20版本,但應用程序最終將運行的服務器版本爲2.11.7.0。當我嘗試在服務器上運行應用程序時,它失敗,說明它無法找到dll或它的一個依賴項(找到的程序集清單定義與程序集引用不匹配)。Oracle客戶端版本的小變化導致應用程序失敗
我將Oracle.DataAccess.dll從服務器複製到我的機器上,改爲將項目改爲引用它,然後重新編譯。它現在在服務器上正常運行。
但是,必須有一種更簡潔的方法來處理這類版本問題,尤其是像x.x.x.0到x.x.x.20這樣小的版本。我一直在ASP.NET中進行開發多年,您可以在web.config中更改對程序集的引用以解決類似的問題,但這是我的第一個「桌面」應用程序,不知道該怎麼做。我試圖在Visual Studio的屬性中爲引用程序集設置「特定版本」爲false,但它似乎沒有做任何事情。我也嘗試添加一個assemblyBinding到app.config文件,但是這導致應用程序立即崩潰。
<runtime>
<assemblyBinding>
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess"
publicKeyToken="89b483f429c47342" />
<bindingRedirect oldVersion="2.111.7.20"
newVersion="2.111.7.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
編輯:哦,我把運行時間段作爲app.config而不是configSections的第一個塊。該應用程序不再崩潰,但我仍然得到相同的錯誤。
「我也嘗試在app.config文件中添加一個assemblyBinding,但這導致應用程序立即崩潰。」 – 2010-09-21 15:28:22