Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在NCrunch中运行但不在Resharper中运行的单元测试_C#_Unit Testing_Resharper_Signalr_Ncrunch - Fatal编程技术网

C# 在NCrunch中运行但不在Resharper中运行的单元测试

C# 在NCrunch中运行但不在Resharper中运行的单元测试,c#,unit-testing,resharper,signalr,ncrunch,C#,Unit Testing,Resharper,Signalr,Ncrunch,我有一组单元测试,它们在NCrunch和VS2012测试运行程序中的resharper7中工作得非常好。我通过NuGet添加了signer和signer.Ninject,现在我的单元测试在NCrunch中工作,但不再在Resharper中运行 TestFixtureSetUp失败,出现以下错误: SetUp : System.IO.FileLoadException : Could not load file or assembly 'Ninject, Version=2.2.0.0,

我有一组单元测试,它们在NCrunch和VS2012测试运行程序中的resharper7中工作得非常好。我通过NuGet添加了signer和signer.Ninject,现在我的单元测试在NCrunch中工作,但不再在Resharper中运行

TestFixtureSetUp失败,出现以下错误:

SetUp : System.IO.FileLoadException : Could not load file or assembly 
'Ninject, Version=2.2.0.0,    Culture=neutral, PublicKeyToken=c7192dc5380945e7' 
or one of its dependencies. The located assembly's manifest definition does 
not match the assembly reference. (Exception from HRESULT: 0x80131040)

at ProjectName.Infrastructure.SiteResolver.BindSignalR(IKernel kernel)
at ProjectName.Infrastructure.SiteResolver.RegisterServices(IKernel kernel) in SiteResolver.cs: line 29
at ProjectName.Tests.Unit.DataTests.Init() in DataTests.cs: line 48
在App.Config中,我有

<runtime>
  <assemblyBinding>
    <dependentAssembly>
      <assemblyIdentity name="Ninject" publicKeyToken="c7192dc5380945e7" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

我没有一个具体的答案,但在追踪这类问题时,我使用Fusion日志查看器。打开Visual Studio命令提示符并运行fuslogvw.exe

如果在禁用日志记录之前未执行此操作,请进入设置并将其设置为将绑定失败记录到磁盘。如果您发现它最初没有显示任何日志,请尝试在管理模式下启动命令提示符

我最近遇到过类似的问题,正是这个工具为我解决了这个问题,尽管有趣的是,它通常在Resharper中工作


解决方案几乎总是一个绑定问题,因此您的位置是正确的。

VS2012中似乎存在一个错误,除非您使用testsettings文件,否则无法获取绑定重定向

不管您使用的是哪个测试框架,只需右键单击解决方案并添加一个新的testsettings文件。默认情况下,这是空的,这是您需要的。从这里开始,您只需将其标记为活动测试设置工具->测试->选择活动测试设置->文件名

更新:

根据这个链接:人们似乎已经能够从@bryanbcook最初提到的R7.1中找到解决方案,尽管Resharper 7.1升级没有起作用,但其中一位评论者发布了一些代码来强制解决。我已经填写了单元测试基类中的空白:

public class UnitTestBase
{
    static DataTests()
    {
        AppDomain.CurrentDomain.AssemblyResolve += CurrentDomainAssemblyResolve;
    }

    public static Assembly CurrentDomainAssemblyResolve(
        object sender, ResolveEventArgs args)
    {
        var name = new AssemblyName(args.Name);
        return name.Name == "Ninject" 
            ? typeof(KernelBase).Assembly : null;
    }
}

这样做了,但日志查看器中没有显示任何内容。这是一个脾气暴躁的野兽,当你查看日志时,不要以管理员的身份运行它,日志存储在本地用户文件夹中的某个位置,因此如果管理员用户不是你通常的登录名,它可能不会因此显示日志。啊,对了,谢谢。在问题中张贴日志。但我不太清楚该怎么办。我希望我能+2,因为我实际上建议使用fuslogvw.exe-一个我很少看到的工具,它能足够快地用于顽固的程序集加载错误。很好的建议。哪个版本的Visual Studio?VS2012中R?Resharper 7的哪个版本。最新问题;谢谢。VS2012更新1应该已经修复了这个bug,所以程序集绑定重定向现在应该可以在单元测试项目中工作。我应该指出,从VS的角度来看,当您添加mstest项目时,测试设置总是添加到解决方案中,所以它不是一个真正的bug…感谢您回答Bryan。我已经试过了,但结果没有变化。人们在上面的链接中评论说,这在10月8日版本7.1 EAP中有效,10月16日刚刚安装了Build 7.1.7.40。没有更改。我在我的VS2012中找不到工具->测试->选择活动测试设置->文件名,但改为菜单:测试->测试设置->选择测试设置文件->文件名FWIW
public class UnitTestBase
{
    static DataTests()
    {
        AppDomain.CurrentDomain.AssemblyResolve += CurrentDomainAssemblyResolve;
    }

    public static Assembly CurrentDomainAssemblyResolve(
        object sender, ResolveEventArgs args)
    {
        var name = new AssemblyName(args.Name);
        return name.Name == "Ninject" 
            ? typeof(KernelBase).Assembly : null;
    }
}