Модульное тестирование Publi c Signed. NET Core / Framework Библиотеки - PullRequest
4 голосов
/ 04 февраля 2020

У меня есть проект библиотеки пакетов NuGet, который компилируется для. NET Core и. NET Framework. Он также использует новую publi c подпись .

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup Label="Build">
    <TargetFrameworks>netstandard2.0;net472</TargetFrameworks>
  </PropertyGroup>

  <PropertyGroup Label="Signing">
    <SignAssembly>true</SignAssembly>
    <AssemblyOriginatorKeyFile>../../Key.snk</AssemblyOriginatorKeyFile>
    <PublicSign>true</PublicSign>
  </PropertyGroup>

</Project>

У меня есть тестовый проект xUnit, использующий также кросс-компиляцию для. NET Core и. NET Framework.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup Label="Build">
    <TargetFrameworks>netcoreapp3.1;net472</TargetFrameworks>
  </PropertyGroup>

  <ItemGroup Label="Package References">
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" />
    <PackageReference Include="xunit" Version="2.4.1" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" />
  </ItemGroup>

  <ItemGroup Label="Project References">
    <ProjectReference Include="..\..\Source\Foo\Foo.csproj" />
  </ItemGroup>

</Project>

Когда я запускаю тесты в этом проекте, тестовый прогон. NET Core проходит успешно, но тестовый прогон. NET Framework завершается неудачно с:

System.IO.FileLoadException: не удалось загрузить файл или сборку 'Foo, версия = 0.0.1.0, Culture = нейтральный, PublicKeyToken = fc5550082a9c642 c' или одна из его зависимостей. Подпись строгого имени не может быть проверена. Возможно, сборка была подделана или была подписана с задержкой, но подписана не полностью с правильным закрытым ключом. (Исключение из HRESULT: 0x80131045)

Как мне заставить их обоих работать?

1 Ответ

1 голос
/ 08 февраля 2020

Использование

<PublicSign Condition=" '$(OS)' != 'Windows_NT' ">True</PublicSign>

Ссылка

# Библиотека SNMP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...