Почему Visual Studio 2019 выполняет тесты в dotnet core 1.0, хотя мои проекты нацелены на dotnet core 2.2?

У меня есть решение с двумя проектами, один из которых является тестовым проектом. Оба проекта нацелены на dotnet core 2.2:

<TargetFramework>netcoreapp2.2</TargetFramework>

Я использую Visual Studio 2019 (версия 16.1.1). Когда я нажимаю «Запустить все» в проводнике тестов, он выводит это предупреждение в окне вывода:

[5/28/2019 10:25:40 PM Informational] ------ Run test started ------
[5/28/2019 10:25:40 PM Warning] Test run will use DLL(s) built for framework .NETCoreApp,Version=v1.0 and platform X64. Following DLL(s) do not match framework/platform settings.
MyApp.UnitTests.dll is built for Framework 2.2 and Platform AnyCPU.
Go to http://go.microsoft.com/fwlink/?LinkID=236877&clcid=0x409 for more details on managing these settings.

[5/28/2019 10:25:41 PM Informational] ========== Run test finished: 3 run (0:00:01.167997) ==========

Тесты выполняются и завершаются успешно. Но мне интересно, как избавиться от этого предупреждения.

Я добавил файл .runsettings со следующими настройками, но все равно вижу то же предупреждение.

<?xml version = "1.0" encoding = "utf-8"?>
<RunSettings>
  <RunConfiguration>
    <TargetFrameworkVersion>FrameworkCore10</TargetFrameworkVersion>
  </RunConfiguration>
</RunSettings>

Изменение FrameworkCore10 на FrameworkCore22 (или netcoreapp2.2) приводит к большому исключению. Верхние несколько строк исключения:

[5/28/2019 10:41:30 PM Error] System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at Microsoft.VisualStudio.TestWindow.Controller.RequestConfiguration.GroupTestContainersConfigByFrameworkAndArchitecture(IEnumerable`1 testContainersConfig, IXPathNavigable runSetting)
   at Microsoft.VisualStudio.TestWindow.Controller.TestRunConfiguration.<GetAllCriteriaQueues>d__64.MoveNext()
   at Microsoft.VisualStudio.TestWindow.Controller.TestRunRequest.<CreateRequests>d__23.MoveNext()
   at Microsoft.VisualStudio.TestWindow.Controller.Request.<RunRequests>d__95.MoveNext()
   --- End of inner exception stack trace ---

Обратите внимание, что те же самые проекты прекрасно работают в Visual Studio 2017 без необходимости в каком-либо файле параметров запуска.

Я не могу воспроизвести это с VS 2019 и xUnit, ориентированными на Core 2.2 и 3.0. Вероятно, это проблема адаптера Visual Studio MSTest. Вы пытались запустить тесты с дотнет-тест? Если можно, значит проблема в тестовом адаптере VS или, по крайней мере, не в консольном тестировщике.

Panagiotis Kanavos 29.05.2019 08:54

Пробовали ли вы обновлять пакеты NuGet тестового проекта? Microsoft.NET.Test.Sdk и любая используемая вами среда тестирования добавляется в виде пакетов NuGet. Возможно проблема уже решена в более новой версии. Или вы можете сделать то, что делает сама команда .NET Core, и использовать xUnit.

Panagiotis Kanavos 29.05.2019 08:57

@PanagiotisKanavos Все пакеты nuget в проекте находятся в последнем стабильном обновлении. Microsoft.NET.Test.Sdk находится на версии 16.1.0. MSTest.TestAdapter и MsTest.TestFramework находятся в версии 1.4.0. Я попробую dotnest test и отчитаюсь. Единственное, чего нельзя сказать, это то, что это проект приложения-функции Azure и обычный тестовый проект.

Turbo 29.05.2019 10:10

Прямо сейчас столкнулся с такой же проблемой. Все, что я смог найти в Интернете, это попытаться установить версию фреймворка в .runsettings на ".NETCoreApp,Version=v2.2". Но похоже, что vs все равно игнорирует эти настройки...

Staeff 29.05.2019 15:07

Тоже наблюдаю такую ​​же проблему. Обновлено до последней версии VS2019, xunit v2.4.1 и Microsoft.NET.Test.Sdk v16.1.1.

Clicktricity 12.06.2019 21:48
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
7
5
2 748
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Возможно, на этой машине не установлена ​​2.2-точечная сетевая структура.

Вот Связь, можно скачать фреймворк.

1.0 больше не поддерживается

Panagiotis Kanavos 29.05.2019 08:40

вы можете сделать одну вещь: установить framework 1.0 и переустановить пакеты 1.0.

user2803730 29.05.2019 11:46
Ответ принят как подходящий

Это не ответ, а публикация, чтобы помочь другим приземлиться здесь.

Команда Visual Studio признала проблему и пытается ее исправить. Лучше всего следить за этим здесь:

У меня возникла проблема после обновления проекта netframework до netcore.

Использование VS Enterprise 16.3.8, очистка решения, а также удаление всех временных папок, таких как bin и obj, помогли мне запустить тесты в нужной версии сетевого ядра.

Редактировать:
В качестве побочного примечания у VS иногда возникают проблемы при смене целевой платформы. После его изменения удаление bin / obj иногда может быть вашим последним спасением.

Другие вопросы по теме