Ошибка лицензии при использовании Benchmark.NET + DevArt dotConnect для PostgreSQL
Я работаю над приложением, состоящим из нескольких проектов, и использую EntityFramework с dotConnect для работы с PostgreSQL. У меня также есть лицензия на dotConnect, которая успешно работает в основном приложении.
Параллельно я создаю консольное приложение (другое решение), используя Benchmark.Net для измерения производительности логики одного из проектов. Но каждый раз, когда я запускаю тест, я получаю ошибку ниже:
System.Reflection.TargetInvocationException: исключение было сгенерировано целью вызова. ---> System.Data.Entity.Core.EntityException: базовый поставщик не удалось открыть. ---> Devart.Data.PostgreSql.PgSqlException: сборка, содержащая встроенную лицензию dotConnect для PostgreSQL, не может использоваться с этим приложением: 0f238e83-669a-46b8-876f-40331880ee79.exe.exe.
Следуя этой инструкции, я уже сгенерировал licenses.licx
через Visual Studio и <exe file>.licenses
с помощью lc.exe
, Но он все еще производит ту же ошибку.
Я подозреваю, что тот факт, что Benchmark.NET генерирует собственный exe-файл для запуска теста, вызывает эту ошибку, но я не уверен на 100%. Так что я ищу решение, если у кого-нибудь есть такое?
Спасибо
1 ответ
Я не уверен, что это хорошая идея - создать эталонный тест для кода, который выполняет вызовы базы данных и т. Д. Тогда вы тестируете не код, а всю систему: файловую систему, драйверы базы данных, возможные взаимодействия и т. Д. на.
Это не идея BenchmarkDotNet. На самом деле он создан для сравнительного анализа сравнительно небольших задач, связанных с ЦП, для поиска узких мест и оптимизации на основе измерений.
Однако, если вы все еще хотите это сделать, решение может состоять в том, чтобы запустить тестовый процесс внутри консольного приложения, которое вы создали, без создания специальных сборочных тестов.
Для этого используйте [InProcess]
приписывать. Просто примените его к своему стандартному классу вместо обычных атрибутов работы:
[InProcess]
public class TypeWithBenchmarks
{
[Benchmark]
public void BenchmarkedMethod()
{
}
}