Dot-Net
自動夾具和最小起訂量 v4
我使用 Nuget 安裝了 Autofixture 和 Moq。所以我有 moq 版本 4。
執行以下程式碼時
var fixture = new Fixture().Customize(new AutoMoqCustomization()); fixture.CreateAnonymous<ISomething>();出現以下錯誤
System.IO.FileLoadException:無法載入文件或程序集’Moq,版本 = 3.1.416.3,文化 = 中性,PublicKeyToken = 69f491c39445e920'
我也嘗試將其重定向到 v4,但沒有運氣。
<configuration> <runtime> <assemblyBinding> <dependentAssembly> <assemblyIdentity name="Moq" publicKeyToken="69f491c39445e920" culture="neutral"/> <bindingRedirect oldVersion="3.1.416.3" newVersion="4.0.10827.0"/> </dependentAssembly> </assemblyBinding> </runtime> </configuration>這裡可能是什麼問題?
為了在配置文件中重定向程序集綁定,您需要在<assemblyBinding> 元素
urn:schemas-microsoft-com:asm.v1中指定命名空間,如下例所示:<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Moq" publicKeyToken="69f491c39445e920" culture="neutral"/> <bindingRedirect oldVersion="3.1.416.3" newVersion="4.0.10827.0"/> </dependentAssembly> </assemblyBinding> </runtime> </configuration>有趣的是,由於In-Process Side-by-Side 執行,使用早期版本的 .NET(例如Moq 3和AutoFixture 2.1)編譯的庫程序集將自動載入到在 .NET 4.0 上執行的程序中。這是來自 MSDN 的關於此的引用:
如果應用程序是使用 .NET Framework 4 執行時編譯的,但包含使用早期執行時建構的庫,則該庫也將使用 .NET Framework 4 執行時。但是,如果您有一個使用早期執行時建構的應用程序和一個使用 .NET Framework 4 建構的庫,則必須強制您的應用程序也使用 .NET Framework 4
相關資源: