Как протестировать сборку под .NET Standard v2?
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 02.11.17 20:14
Оценка:
Пытаюсь перетащить свою библиотеку на .NET Standard v2 [VS2017]

Вроде все скомпилировалось, но не получается подсунуть тесты под NUnit.

Я так понимаю, что я не понимаю .NET Standard...

По порядку:

1. Поставил ".NET Core cross-platform development" в VS
2. Пересобрал модули
  Проектные файлы выглядят как-то так
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <EnableDefaultItems>false</EnableDefaultItems>
    <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  </PropertyGroup>

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <RootNamespace>lcpi_lib_tests</RootNamespace>
    <Prefer32Bit>false</Prefer32Bit>
    <OutputPath>bin\vs2017_nets2.0_$(Configuration)\</OutputPath>
    <IntermediateOutputPath>obj\vs2017_nets2.0_$(Configuration)\</IntermediateOutputPath>
    <KeyContainerName>lcpi.net.code.keys</KeyContainerName>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <AssemblyName>lcpi.lib.ntest.nets2_0.debug</AssemblyName>
    <DefineConstants>DEBUG;BUILD_CONF__NETSTANDARD2_0</DefineConstants>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <AssemblyName>lcpi.lib.ntest.nets2_0</AssemblyName>
    <DefineConstants>BUILD_CONF__NETSTANDARD2_0</DefineConstants>
  </PropertyGroup>
....

К проекту с NUnit тестами была добавлена ссылка на nunit.framework.dll (2.6.2) — она нормально работала с тестами откомпилированными для FW 4.6.2

3. В выходном каталоге сформировались следующие файлы:
lcpi.lib.nets2_0.debug.dll <---- это библиотека, которую надо протестировать
lcpi.lib.nets2_0.debug.pdb
lcpi.lib.ntest.nets2_0.debug.deps.json
lcpi.lib.ntest.nets2_0.debug.dll <----- Это тесты
lcpi.lib.ntest.nets2_0.debug.pdb
nunit.framework.dll
nunit.framework.xml


4. Запускаю nunit.exe (2.6.2) для сборки с тестами и получаю ошибку

---------------------------
NUnit
---------------------------
Test load failed!

System.IO.FileNotFoundException : Не удалось загрузить файл или сборку "netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51" либо одну из их зависимостей. Не удается найти указанный файл.

For further information, use the Exception Details menu item.
---------------------------
ОК
---------------------------


Поиск по системному диску выдал такой список:
C:\Program Files\dotnet\sdk\NuGetFallbackFolder\netstandard.library\2.0.0\build\netstandard2.0\ref\netstandard.dll
C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.netcore.app\2.0.0\ref\netcoreapp2.0\netstandard.dll
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\netstandard.dll
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\ref\netstandard.dll
C:\Users\Dima\.nuget\packages\runtime.win-x86.microsoft.netcore.app\2.0.0\runtimes\win-x86\lib\netcoreapp2.0\netstandard.dll
C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.0.0\netstandard.dll
C:\Program Files\dotnet\sdk\2.0.2\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\netstandard.dll
C:\Program Files\dotnet\sdk\2.0.2\Microsoft\Microsoft.NET.Build.Extensions\net461\ref\netstandard.dll


Вопрос — что нужно сделать, что nunit.exe смог загрузить мою сборку. То есть, чтобы он нашел эту netstandard.dll?

Спасибо.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.