use*_*034 12 .net unit-testing moq autofixture
我使用Nuget安装了Autofixture和Moq.So我有moq版本4.
运行以下代码时
var fixture = new Fixture().Customize(new AutoMoqCustomization());
fixture.CreateAnonymous<ISomething>();
Run Code Online (Sandbox Code Playgroud)
出现以下错误
System.IO.FileLoadException:无法加载文件或程序集'Moq,Version = 3.1.416.3,Culture = neutral,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>
Run Code Online (Sandbox Code Playgroud)
这可能是什么问题?
Enr*_*lio 17
为了在配置文件中重定向程序集绑定,您需要urn:schemas-microsoft-com:asm.v1在<assemblyBinding>元素中指定命名空间,如下例所示:
<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>
Run Code Online (Sandbox Code Playgroud)
有趣的是,由于进程内并行执行,使用早期版本的.NET编译的库程序集(例如Moq 3和AutoFixture 2.1)将自动加载到.NET 4.0上运行的进程中.以下是MSDN对此的引用:
如果使用.NET Framework 4运行时编译应用程序但包含使用早期运行时构建的库,则该库也将使用.NET Framework 4运行时.但是,如果您的应用程序是使用早期运行时和使用.NET Framework 4构建的库构建的,则必须强制您的应用程序也使用.NET Framework 4
相关资源: