使用 Benchmark.NET + DevArt dotConnect for PostgreSQL 的许可证错误
License error using Benchmark.NET + DevArt dotConnect for PostgreSQL
我正在开发一个由多个项目组成的应用程序,并使用 EntityFramework 和 dotConnect to 运行 针对 PostgreSQL。我也有 dotConnect 的许可证,它在主应用程序中成功运行。
同时,我正在使用 Benchmark.Net 制作一个控制台应用程序(一个不同的解决方案)来衡量其中一个项目的逻辑性能。但每次我 运行 基准测试时,我都会收到以下错误:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Data.Entity.Core.EntityException: The underlying provider failed on Open. ---> Devart.Data.PostgreSql.PgSqlException: Assembly that contains embedded dotConnect for PostgreSQL license cannot be used with this application: 0f238e83-669a-46b8-876f-40331880ee79.exe.exe.
在 this instruction 之后,我已经通过 Visual Studio 生成了 licenses.licx
,通过 lc.exe
生成了 <exe file>.licenses
。但它仍然产生相同的错误。
我怀疑 Benchmark.NET 为 运行 基准生成了自己的 exe 导致了这个错误,但我不是 100% 确定。所以我正在寻找解决方案,如果有人有的话?
谢谢
我不确定为执行数据库调用等的代码创建基准是个好主意。您不是在对 代码 进行基准测试,而是对整个 system 而不是:文件系统、数据库驱动程序、可能的互操作性等等。
这不是BenchmarkDotNet的想法。它实际上是为相对较小的 CPU 绑定任务的基准测试而创建的,以发现瓶颈并根据测量执行优化。
但是,如果您仍然想这样做,一个解决方案可能是 运行 您创建的控制台应用程序的进程中基准测试,而不生成特殊的基准测试程序集。
为此,请使用 [InProcess]
属性。只需将其应用于您的基准 class 而不是通常的工作属性:
[InProcess]
public class TypeWithBenchmarks
{
[Benchmark]
public void BenchmarkedMethod()
{
}
}
我正在开发一个由多个项目组成的应用程序,并使用 EntityFramework 和 dotConnect to 运行 针对 PostgreSQL。我也有 dotConnect 的许可证,它在主应用程序中成功运行。
同时,我正在使用 Benchmark.Net 制作一个控制台应用程序(一个不同的解决方案)来衡量其中一个项目的逻辑性能。但每次我 运行 基准测试时,我都会收到以下错误:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Data.Entity.Core.EntityException: The underlying provider failed on Open. ---> Devart.Data.PostgreSql.PgSqlException: Assembly that contains embedded dotConnect for PostgreSQL license cannot be used with this application: 0f238e83-669a-46b8-876f-40331880ee79.exe.exe.
在 this instruction 之后,我已经通过 Visual Studio 生成了 licenses.licx
,通过 lc.exe
生成了 <exe file>.licenses
。但它仍然产生相同的错误。
我怀疑 Benchmark.NET 为 运行 基准生成了自己的 exe 导致了这个错误,但我不是 100% 确定。所以我正在寻找解决方案,如果有人有的话?
谢谢
我不确定为执行数据库调用等的代码创建基准是个好主意。您不是在对 代码 进行基准测试,而是对整个 system 而不是:文件系统、数据库驱动程序、可能的互操作性等等。
这不是BenchmarkDotNet的想法。它实际上是为相对较小的 CPU 绑定任务的基准测试而创建的,以发现瓶颈并根据测量执行优化。
但是,如果您仍然想这样做,一个解决方案可能是 运行 您创建的控制台应用程序的进程中基准测试,而不生成特殊的基准测试程序集。
为此,请使用 [InProcess]
属性。只需将其应用于您的基准 class 而不是通常的工作属性:
[InProcess]
public class TypeWithBenchmarks
{
[Benchmark]
public void BenchmarkedMethod()
{
}
}