【问题标题】:License error using Benchmark.NET + DevArt dotConnect for PostgreSQL使用 Benchmark.NET + DevArt dotConnect for PostgreSQL 的许可错误
【发布时间】:2018-11-13 09:43:54
【问题描述】:

我正在开发一个由多个项目组成的应用程序,并使用 EntityFramework 和 dotConnect 来针对 PostgreSQL 运行。我还有一个 dotConnect 许可证,它可以在主应用程序中成功运行。

同时,我正在使用 Benchmark.Net 制作一个控制台应用程序(一种不同的解决方案)来衡量其中一个项目的逻辑性能。但每次我运行基准测试时,我都会收到以下错误:

System.Reflection.TargetInvocationException:调用的目标已抛出异常。 ---> System.Data.Entity.Core.EntityException:底层提供程序在打开时失败。 ---> Devart.Data.PostgreSql.PgSqlException:包含嵌入式 dotConnect for PostgreSQL 许可证的程序集不能用于此应用程序:0f238e83-669a-46b8-876f-40331880ee79.exe.exe。

this instruction 之后,我已经通过Visual Studio 生成了licenses.licx,并通过lc.exe 生成了<exe file>.licenses。但它仍然产生同样的错误。

我怀疑 Benchmark.NET 会生成自己的 exe 来运行导致此错误的基准测试,但我不能 100% 确定。所以我正在寻找一个解决方案,如果有人有的话?

谢谢

【问题讨论】:

  • @dymanoid,怎么做?能否请您指出 Benchmark.NET 的文档或任何示例?

标签: c# .net dotconnect benchmarkdotnet


【解决方案1】:

我不确定为执行数据库调用等的代码创建基准测试是否是个好主意。那时您不是在对 代码 进行基准测试,而是在整个系统 而是:文件系统、数据库驱动程序、可能的互操作内容等等。

这不是 BenchmarkDotNet 的想法。它实际上是为对相对较小的 CPU 密集型任务进行基准测试而创建的,以发现瓶颈并根据测量结果执行优化。

但是,如果您仍想这样做,一个解决方案可能是在您创建的控制台应用程序的进程中运行基准测试,而无需生成特殊的基准测试程序集。

为此,请使用[InProcess] 属性。只需将其应用于您的基准类而不是通常的工作属性:

[InProcess]
public class TypeWithBenchmarks
{
    [Benchmark]
    public void BenchmarkedMethod()
    {
    }
}

【讨论】:

  • 那行得通。十分感谢。至于基准测试本身,尽管我同意 BenchmarkDotNet 是为微基准测试而设计的,但我必须强调我正在测试的逻辑非常轻量级,并且我已经在使用 BenchmarkDotNet 时发现了性能问题。所以我认为到目前为止它满足了我的所有需求
  • 应用修复后我得到了Unhandled Exception: System.InvalidOperationException: List of measurements contains no elements。这是一个 BDN 错误,似乎已在 0.11.2.849 中修复。要安装此夜间版本,请按照说明操作:benchmarkdotnet.org/articles/guides/nuget.html#nightly
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-22
  • 1970-01-01
  • 2022-09-23
  • 2011-08-06
  • 1970-01-01
相关资源
最近更新 更多