2012-03-22 65 views
4

我對GAC /我的應用程序沒有什麼問題。我以前一直在使用9.0.2.3951版本的iAnywhere.Data.AsaClient程序集引用,但現在我已經通過進入C:\ Windows \ Assembly來卸載它。目前在GAC中有9.0.2.3924版本,但是當我運行應用程序時,它仍然在尋找版本9.0.2.3951而不是3924.仍然參考程序集的以前版本的應用程序

我試着進入Assembly.cs文件,看看它是否有任何條目3951但它甚至沒有提到,然後我試圖進入App.Config文件來查看它是否有任何條目,但沒有。我也從項目中刪除了引用,並重新添加了對3924文件版本的引用。

如何讓我的應用程序查找3924而不是3951文件版本。

App still referencing newer version although there is no references

回答

1

code4life給了一個很好的解決辦法,在大多數情況下工作。然而在我的情況下,一個不同的解決方案爲我工作爲了幫助其他人,我在屏幕截圖中添加了這個解決方案。

  1. 在VS2010點擊工具,然後點擊選項然後項目和解決方案鏈接,然後點擊編譯和運行然後在MSBuild項目生成輸出的詳細程度:選擇診斷

  2. 根據MSBuild項目建立日誌文件詳細程度:選擇診斷,然後按OK

Options Screen

「3」。按F5再次運行您的項目。這次請看OUTPUT窗口查找調用程序集部分。在我的情況下,它向我展示了下面。

enter image description here 在上圖中突出顯示的文本顯示我有這仍然是目前在GAC它重定向從我的應用程序3924版本調用策略文件。看了這個之後,我去了C:\ Windows \ Assembly **並開始尋找導致重定向的策略文件**卸載它。截圖如下, enter image description here

「4.」我只需右鍵單擊該文件並卸載我不想要的版本,然後再次運行我的程序並將其修復。

0

搜索所有iAnywhere.Data.AsaClient的DLL,並找出哪些DLL的是其中保持

open cmd.exe 

    cd\ 

    dir iAnywhere.Data.AsaClient.dll /s 

檢查所有的DLL的版本,你正在尋找和去除休息該應用程序發現這些dll的

如果你發現dll是在gac中的錯誤版本從gac卸載如果你需要幫助知道如何做到這一點讓我知道,我可以告訴你

3

您需要將assemblyBinding信息添加到您的配置中,以強制正確綁定。事情是這樣的:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <probing privatePath="" /> 
     <dependentAssembly> 
      <assemblyIdentity name="iAnywhere.Data.AsaClient" publicKeyToken="f222fc4333e0d400" culture="neutral" /> 
      <bindingRedirect oldVersion="9.0.2.3951-9.0.2.3951" newVersion="9.0.2.3924" /> 
     </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

第二個選項:卸載有問題的項目,然後選擇編輯它(通過上下文菜單)。尋找項目的參考,這應該是這樣的:

<Reference Include="iAnywhere.Data.AsaClient, Version=9.0.2.3951, Culture=neutral, PublicKeyToken=f222fc4333e0d400"> 

您可以刪除它,然後手動再生,或者只是修改XML條目:

<Reference Include="iAnywhere.Data.AsaClient, Version=9.0.2.3924, Culture=neutral, PublicKeyToken=f222fc4333e0d400"> 

乾杯!

+0

嘗試了第一個選項,但仍然收到相同的錯誤。現在檢查第二個選項。 – MStp 2012-03-22 20:37:46

0

問題是,您的應用程序是針對它無法再找到的程序集版本編譯的。您的選項是:

  1. 更新您的裝配參考,並重新編譯代碼
  2. 創建自己的響應綁定重定向爲@ code4life提到
相關問題