Консольное приложение .NET Core 2.1 не может ссылаться на библиотеку классов .NET CORE 2.1 - PullRequest
0 голосов
/ 30 сентября 2018

В .NET Framework 4.5 и ниже у меня есть библиотека модульного тестирования, которую я хотел бы передать проектам тестирования модулей / реализации, чтобы уменьшить накладные расходы при запуске нового тестового проекта.

Сегодня вечером я попыталсясделать .NET Core версию этого.В процессе разработки мой тестовый модуль был добавлен в решение Console App в качестве локальной ссылки.После нескольких попыток борьбы с потерей тестера xUnit, который раньше поставлялся в комплекте с xUnit (но был заброшен около 2.3), я придумал следующий список пакетов для библиотеки UnitTesting.

Список пакетов библиотеки модульных тестов

<ItemGroup>
    <PackageReference Include="AutoFixture.AutoMoq" Version="4.5.0" />
    <PackageReference Include="AutoFixture.Xunit2" Version="4.5.0" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.8.0" />
    <PackageReference Include="MSTest.TestAdapter" Version="1.3.2" />
    <PackageReference Include="MSTest.TestFramework" Version="1.3.2" />
    <PackageReference Include="Shouldly" Version="3.0.1" />
    <PackageReference Include="System.ComponentModel.TypeConverter" Version="4.3.0" />
    <PackageReference Include="xunit" Version="2.4.0" />
</ItemGroup>

Последующее отслеживание консольного приложения

Из-за ситуации с новым тестовым адаптером я обнаружил, что единственный способ получить консольное приложение для просмотра модульных тестов - добавить следующий пакет.к приложению.

<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0">

Если этот пакет был включен в библиотеку, тесты не будут найдены.

Проблема решена.

Проблема не решена

Я развернул все это как пакет nuget для .Net Core 2.1, выгрузил библиотеку из консольного приложения и извлек пакет nuget как Зависимость.

На данный момент пакет имеетпредупреждение о сборке, и оно не может ссылаться на то, на что оно ссылалось несколько раз, будучи локальным проектом решения.Он предлагает понизить версию до .net Framework 4.6.1, где, я думаю, .net Framework начинает входить в .net Standard 2.0?Это может быть хорошо для достижения цели, которую я хочу, но я бы предпочел использовать исключительно ядро ​​.net, так как это домашний проект, который я делаю в .net Core, чтобы узнать больше об этом.(Возможно, это не тот холм, за который стоит умирать, я открыт для этой обратной связи.)

Я много читал о том, как ядро ​​.net использовало неявное управление версиями для своих пакетов, и это не былоприменяется правильно.Я видел несколько потоков, которые я попытаюсь связать ниже, чтобы показать различные вещи, которые я пробовал, но в конце я не могу использовать библиотеку, если она развернута как пакет nuget, и могу, если она загружается вручную врешение.

xUnit исследование, прежде чем я получил модульные тесты для обнаружения

  1. https://docs.microsoft.com/en-us/visualstudio/releasenotes/vs2017-relnotes#testadapterextension
  2. https://developercommunity.visualstudio.com/content/problem/315835/unit-tests-are-not-running.html
  3. https://xunit.github.io/docs/nuget-packages

.NET Core 2.1 Библиотека не компилируется в .NET Core 2.1 Исследования приложений

  1. https://github.com/aspnet/Docs/issues/6430 - Я считаю, что это наиболее актуальное обсуждение из всехссылки для моего выпуска
  2. https://forums.xamarin.com/discussion/123160/nugets-giving-error-restored-using-netframework-version-4-61-instead-of-the-target-framework
  3. https://github.com/dotnet/standard/issues/481
  4. https://github.com/xunit/xunit/issues/1767

Есть небольшие совпадения по маленьким битам ичасти, которые я нашел под любой темой.Одним из наиболее диких предложений было заменить Project SDK вместо приложения и добавить в приложение (или библиотеку? Я пробовал оба варианта в разных сочетаниях).

Мне кажется, я решил заставить работать xUnit в.NET Core 2.1, я просто не могу развернуть его как nupkg.

Кто-нибудь еще побеждал это?Мне не удалось найти ответ, который работал для меня ни в одном из перечисленных выше случаев, или в поиске в StackOverflow.

Возможно, я ошибаюсь, но все пакеты, на которые я ссылался, полагаю, делаютработать с .NET Core 2.1 или должны основываться на их описании перед установкой.Об этом свидетельствует приложение, работающее, когда проект модульного теста находится в решении с приложением.

Спасибо всем, кто найдет время, чтобы прочитать это.

-Omni

...