切换计算机时无法加载文件或程序集X

时间:2016-01-01 02:00:28

标签: .net xamarin-studio

我在两台Windows和Mac机器上使用Xamarin.Studio。

每次我在一个平台上进行更改然后切换到另一个平台上工作时,我会不断收到这些恼人的随机错误。也就是说,我有一台运行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个)
  • 将app.config中的重定向添加到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.

我无法弄清楚为什么地球上这些问题只会在我切换到另一台PC时发生。这必须是botch .Net和Mono的缓存系统的一些问题

我的问题是:

  • 如何避免此类问题(干净缓存?)
  • 如何修复此特定错误?

1 个答案:

答案 0 :(得分:2)

我设法通过告诉Xamarin.Studio做一个&#34; Local Copy&#34;来解决这个特殊的错误。在System.Net.Http:

  • 我注意到System.Net.Htpp.dll甚至不在bin文件夹中(对于测试项目)
  • 我可以看到项目正在引用它
  • 右键单击 - &gt;特性
  • 检查&#34;本地复制&#34; (将引用的程序集复制到输出文件夹,默认为no)
  • 现在我可以在bin中看到dll
  • 测试项目现在在测试板中正常运行

这是一种奇怪且浪费时间的行为,它确实令人沮丧,修复起来并不好玩。