2016-01-01 26 views
1

我在2臺計算機Windows和Mac上使用Xamarin.Studio。切換計算機時無法加載文件或程序集X

每次我在一個平臺上進行更改,然後切換到其他平臺上的工作時,我總是收到這些煩人的隨機錯誤。也就是說,我有一臺運行Windows的PC,在那裏我進行一些開發,然後有時在我的Mac上開發。我使用Git。

我有兩個項目。一個圖書館項目和一個單元測試項目。這些都是當前的依賴關係:

庫項目:

<package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10" /> 
    <package id="Microsoft.Bcl" version="1.1.10" targetFramework="portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10" /> 
    <package id="Microsoft.Bcl.Build" version="1.0.21" targetFramework="portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10" /> 
    <package id="Microsoft.Net.Http" version="2.2.29" targetFramework="portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10" /> 
    <package id="Newtonsoft.Json" version="7.0.1" targetFramework="portable-net45+win+wpa81+wp80+MonoTouch10+MonoAndroid10+xamarinmac20+xamarinios10" /> 

測試項目:

<package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net45" /> 
    <package id="Microsoft.Bcl" version="1.1.10" targetFramework="net45" /> 
    <package id="Microsoft.Bcl.Build" version="1.0.21" targetFramework="net45" /> 
    <package id="Microsoft.Net.Http" version="2.2.29" targetFramework="net45" /> 
    <package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" /> 
    <package id="NUnit" version="2.6.3" targetFramework="net45" /> 

第一個問題,我是當我在Mac切換到Windows和測試將無法運行。我終於明白,我必須:

  • 重新安裝的Json包庫項目
  • 添加5個封裝到測試,項目(在以前的列表中的第5)
  • 添加重定向的應用程序。配置這兩個項目的JSON:

    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
        <dependentAssembly> 
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
        <bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" /> 
        </dependentAssembly> 
    </assemblyBinding> 
    

請記住,這個問題並沒有浮出水面,直到我切換到Windows ..它是編譯和運行就好Ø Mac。現在

,我換回到我的Mac,並再次另一個隨機奇怪的問題..

SetUp : System.IO.FileNotFoundException : Could not load file or assembly 'System.Net.Http, Version=1.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. 

我只是不明白,爲什麼在地球上做的這些問題,只有當我切換到另一臺電腦發生。這必須有一些問題與彆彆扭扭的.Net和Mono

的高速緩存系統

我的問題是:

  • 如何避免此類問題
  • 如何解決這個特定的(乾淨的緩存?)錯誤?
+0

你可能也需要重定向'System.Net.Http' ...並找出是什麼導致了這種意外的依賴 - 通常它發生在你有2個版本和一個取決於構建順序的bin文件夾中。附註:'id =「Newtonsoft.Json」version =「8.0.1」' - 不應該重定向到版本'8.0.0.0'? –

+0

我甚至在輸出bin文件夾中看不到任何叫做System.Net.Http的dll。儘管它擁有圖書館項目所有的軟件包,但我確實在圖書館項目中擁有它,但不是測試項目。 –

+0

請看我的答案 –

回答

2

我設法告訴Xamarin.Studio做一個「本地副本」上System.Net.Http解決此特定錯誤:

  • 我注意到System.Net.Htpp。DLL甚至沒有在bin文件夾(測試項目)
  • 我可以看到該項目引用它
  • 右鍵 - >屬性
  • 檢查「本地副本」(複製引用裝配到輸出文件夾,默認無)
  • 現在我可以看到在箱子的dll
  • 測試項目目前運行良好的測試焊盤

這是這樣的離奇和浪費時間的行爲,它是真正令人沮喪和不好玩固定。

相關問題