2011-06-28 19 views
11

zainstalowałem Autofixture i Min korzystając Nuget.So mam Min wersji 4.Autofixture i Moq v4

Kiedy uruchomiony następujący kod

var fixture = new Fixture().Customize(new AutoMoqCustomization()); 
fixture.CreateAnonymous<ISomething>(); 

następujący błąd pojawia się

Systemu .IO.FileLoadException: Could nie załadować pliku lub zespołu "Moq, Wersja = 3.1.416.3, Kultura = neutralny, PublicKeyToken = 69f491c39445e920 '

Próbowałem również przekierować go do wersji v4, ale bez powodzenia.

<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> 

Co może być problemem?

+1

Zobacz również ten bilet: http://autofixture.codeplex.com/workitem/4225 – svrist

+0

dzień [wersja 2.13.1] (https://github.com/AutoFixture/AutoFixture/tags) niezbędne przekierowania powiązania wiążącego są teraz [automatycznie dodawane do pliku konfiguracyjnego] (https://github.com/AutoFixture/AutoFixture/pull/11) po zainstalowaniu pakietu [AutoFixture.AutoMoq] (http://nuget.org/packages/AutoFixture.AutoMoq) NuGet. –

Odpowiedz

17

W celu przekierowania montaż wiąże w pliku konfiguracyjnym, musisz podać nazw urn:schemas-microsoft-com:asm.v1 w <assemblyBinding> element, jak w poniższym przykładzie:

<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> 

To ciekawe podkreślić, że zespoły bibliotecznych skompilowana z wcześniejsza wersja .NET (na przykład Moq 3 i AutoFixture 2.1) zostanie automatycznie załadowana do procesu uruchomionego w .NET 4.0 z powodu In-Process Side-by-Side execution. Oto cytat z MSDN na ten temat:

Jeśli aplikacja jest skompilowany przy użyciu .NET Framework 4 Runtime ale zawiera bibliotekę, który został zbudowany użyciu starszej środowisko wykonawcze, że biblioteka użyje .NET Framework 4 runtime również. Jednakże, jeśli masz aplikację który został zbudowany przy użyciu wcześniejszy czas pracy oraz bibliotekę, która była zbudowany przy użyciu .NET Framework 4, ty musi zmusić swoją aplikację również użyciu .NET Framework 4

Powiązane zasoby:

1

Przyjęta odpowiedź nie działa dla mnie, ponieważ chcę użyć Moq 4 z tej samej biblioteki klas (non exe) jako AutoFixture.AutoMoq. Wydaje się również, że istnieje no plans, aby obsługiwać Moq 4 z AutoFixture. I skończył przy użyciu AutoFixture.AutoRhinoMocks jako kolejny najbardziej popularnym wyborem, który nie jest sprzeczny z Min 4.

+3

Jakie problemy widzisz? Używam AutoFixture.AutoMoq z Moq 4 od lat, bez problemów. –