Я настраивал несколько тестовых случаев, и часть из них хотела убедиться, что я смогу запустить некоторые тесты EntityFramework.
У меня проблемы с загрузкой драйвера (в данном случае Npgsql). Я могу загрузить его в приложение, но не тестовый пример.
Я собрал тривиальный проект, показывающий проблему.
https://github.com/scornflake/StrongNameNightmare
а) Загрузка сборочных работ из приложения
b) та же самая Assembly.Load в тестовом случае завершается с ошибкой (не удалось загрузить файл или сборку 'Npgsql.EntityFrameworkCore.PostgreSQL, версия = 2.0.2.0, Culture = нейтральный, PublicKeyToken = 5d8b90d52f46fda7' или один из его Зависимости. Подпись строгого имени не может быть проверена. Возможно, сборка была подделана или подписана с задержкой, но не полностью подписана с использованием правильного закрытого ключа.)
SHA1 двух файлов (один в пакетах \ и тот, который копируется в выходную папку сборки) идентичны:
- SHA1-хэш пакетов \ Npgsql.EntityFrameworkCore.PostgreSQL.2.0.2 \ lib \ netstandard2.0 \ Npgsql.EntityFrameworkCore.PostgreSQL.dll:
29261f08a466e3b5c24ff8d1aa1810b29c3ff8a5
- SHA1-хэш тестов \ bin \ Debug \ Npgsql.EntityFrameworkCore.PostgreSQL.dll:
29261f08a466e3b5c24ff8d1aa1810b29c3ff8a5
Работает 'sn -v' пакетов \ Npgsql.EntityFrameworkCore.PostgreSQL.2.0.2 \ lib \ netstandard2.0 \ Npgsql.EntityFrameworkCore.PostgreSQL.dll.
'sn -v' тестов \ bin \ Debug \ Npgsql.EntityFrameworkCore.PostgreSQL.dll завершается ошибкой
Failed to verify assembly -- Strong name validation failed.
Я предполагаю, что отказ в проверке строгого имени версии 'tests' драйвера Npgsql является основной причиной сбоя загрузки сборки в тесте.
Я пытался отключить проверку строгого имени (sn -Vr *, *) без эффекта.
Я немного растерялся. Я не эксперт в VS / Assemblies, возможно, кто-то может пролить свет на то, почему сборка не прошла проверку строгого имени в другой папке? Мне кажется очень странным.