Ошибка лицензии при использовании Benchmark.NET + DevArt dotConnect для PostgreSQL - PullRequest
0 голосов
/ 13 ноября 2018

Я работаю над приложением, состоящим из нескольких проектов, и использую 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 Ответ

0 голосов
/ 13 ноября 2018

Я не уверен, что это хорошая идея - создать эталон для кода, который выполняет вызовы из базы данных и т. Д. Тогда вы тестируете не эталон code , а всю вашу систему : файловая система, драйверы базы данных, возможные взаимодействия и т. д.

Это не идея BenchmarkDotNet.На самом деле он создан для сравнительного анализа сравнительно небольших задач, связанных с ЦП, для поиска узких мест и оптимизации на основе измерений.

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

Для этого используйте атрибут [InProcess].Просто примените его к своему стандартному классу вместо обычных атрибутов работы:

[InProcess]
public class TypeWithBenchmarks
{
    [Benchmark]
    public void BenchmarkedMethod()
    {
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...