Как диагностировать Resharper Unit Test Runner "Невозможно загрузить одну или несколько запрошенных типов"

Когда я запускаю или отлаживаю свои модульные тесты с помощью Resharper Unit Test Runner, появляется диалоговое окно, в котором говорится: "Unit Test Runner не смог запустить тесты - не удалось загрузить один или несколько запрошенных типов. Извлеките LoaderExceptions свойство для получения дополнительной информации":

введите описание изображения здесь

Теперь я попробовал перестроить, очистил, вручную удалил папки, перезапуски на Visual Studio, перезагрузил оборудование, посмотрел в окна вывода/отладки и вечером включил R # "внутренний" режим, чтобы я мог видеть его журналы (записанные в% Temp %\JetLogs, как я понимаю), но ничто из этого не разрешает или вообще не дает никаких подсказок. Я пробовал "отлаживать" R #, но снова появляется диалоговое окно, прежде чем отладчик ударит по любым исключениям.

Как, черт возьми, я должен это разрешить? Это очень раздражает!

Я использую:

  • R # 2016.1.2
  • NUnit 3.2.1
  • Обновление Visual Studio 2015 2 (14.0.25123)

Ответ 1

Я закончил диагностировать это с помощью довольно простого метода:

Я преобразовал сборку unit test из библиотеки классов в консольное приложение и добавил главную точку входа (показано ниже). Внутри я повторяю все типы сборок, которые, как я надеялся, приведут к загрузке всех типов и зависимых сборок, что позволит выявить любые исключения нагрузки. И да, это сработало. Он быстро выбросил System.Reflection.ReflectionTypeLoadException, который является каноническим источником сообщения об ошибке "Невозможно загрузить один или несколько...". В отладчике я мог изучить свойство LoaderExceptions, в котором говорилось, что основная проблема была.

public class Program
{ 
    public static void Main(string[] args)
    {
        var types = Assembly.GetExecutingAssembly().GetTypes();
    }
}

Ответ 2

Ответ Schneider будет работать нормально, но если есть более ленивые люди, вы можете проверить LoaderExceptions в PowerShell немного быстрее.

[Reflection.Assembly]::LoadFile('<path to your assembly>') | % {$_.GetTypes()}
$Error[0].Exception.InnerException.LoaderExceptions