在 .Net Framework 4.7.2 中注册 ServiceStack.OrmLite

Posted

技术标签:

【中文标题】在 .Net Framework 4.7.2 中注册 ServiceStack.OrmLite【英文标题】:Register ServiceStack.OrmLite in .Net Framework 4.7.2 【发布时间】:2021-11-19 13:07:13 【问题描述】:

我有一个实现 .Net Standard 2.0 的非常简单的库,因为我需要这个库跨多种框架(即 .Net Framework 4.7.2 应用程序)。

在最基本的层面上,.Net 标准库包含类库并使用 ServiceStack.OrmLite Sqlite 对一系列 Sqlite 数据库执行基本的 CRUD 操作,每个“项目”都有一个单独的数据库,存储在各种目录中网络驱动器。这是应用程序限制对信息的访问并将客户端数据存储在同一项目文件夹中的要求。

问题是:我已按照https://docs.servicestack.net/register 上的说明进行操作,并将以下代码放在我的测试Console App - .Net Framework 4.7.2App.config 中:

<appSettings>
    <add key="servicestack:license" value="licenseKeyText" />
</appSettings>

但是,当我运行控制台应用程序时,它会触发以下内容:

ServiceStack.LicenseException: 'The free-quota limit on '10 OrmLite Tables' has been reached. Please see https://servicestack.net to upgrade to a commercial license or visit https://github.com/ServiceStackV3/ServiceStackV3 to revert back to the free ServiceStack v3.'

This exception was originally thrown at this call stack:
    ServiceStack.LicenseUtils.ApprovedUsage(ServiceStack.LicenseFeature, ServiceStack.LicenseFeature, int, int, string) in LicenseUtils.cs
    ServiceStack.LicenseUtils.AssertValidUsage(ServiceStack.LicenseFeature, ServiceStack.QuotaType, int) in LicenseUtils.cs
    ServiceStack.OrmLite.OrmLiteConfigExtensions.GetModelDefinition(System.Type) in OrmLiteConfigExtensions.cs
    ServiceStack.OrmLite.OrmLiteWriteCommandExtensions.CreateTable(System.Data.IDbCommand, bool, System.Type) in OrmLiteWriteCommandExtensions.cs
    ServiceStack.OrmLite.OrmLiteWriteCommandExtensions.CreateTable<T>(System.Data.IDbCommand, bool) in OrmLiteWriteCommandExtensions.cs
    ServiceStack.OrmLite.OrmLiteSchemaApi.CreateTableIfNotExists.AnonymousMethod__15_0(System.Data.IDbCommand) in OrmLiteSchemaApi.cs
    ServiceStack.OrmLite.OrmLiteExecFilter.Exec<T>(System.Data.IDbConnection, System.Func<System.Data.IDbCommand, T>) in OrmLiteExecFilter.cs
    ServiceStack.OrmLite.OrmLiteReadExpressionsApi.Exec<T>(System.Data.IDbConnection, System.Func<System.Data.IDbCommand, T>) in OrmLiteReadExpressionsApi.cs
    ServiceStack.OrmLite.OrmLiteSchemaApi.CreateTableIfNotExists<T>(System.Data.IDbConnection) in OrmLiteSchemaApi.cs
...
    [Call Stack Truncated]

这不言而喻,但我显然已将licenseKeyText 替换为https://servicestack.net/trial 提供的免费试用(30 天),一旦使用 OrmLite 实现概念验证,它将被付费订阅取代.

我是否缺少明显的东西,或者 ServiceStack.OrmLite 是否需要不同的注册过程?

谢谢

【问题讨论】:

【参考方案1】:

此错误表明许可证密钥未正确注册。

问题是因为您的 .NET Standard 2.0 项目仅引用了 ServiceStack 库的 .NET Core / .NET Standard 构建,以便与您的 library project must multi-target 和引用的 .NET Framework 兼容.NET Framework 和 .NET Standard 版本:

<PropertyGroup>
  <TargetFrameworks>net472;netstandard2.0</TargetFrameworks>
</PropertyGroup>

然后您的 .NET Framework 控制台应用程序将能够引用您的库的 .NET Framework v4.7.2 构建,它可以在您的 .NET 中注册 servicestack:license 应用程序设置框架宿主项目。

【讨论】:

这么简单的解释——问题解决了!

以上是关于在 .Net Framework 4.7.2 中注册 ServiceStack.OrmLite的主要内容,如果未能解决你的问题,请参考以下文章

.NET Core Httpclient 有效,但 .Net Framework 4.7.2 httpclient 无效

EnableCors 使用 ApiController 但不使用 Controller .NET Framework 4.7.2

将解决方案从 .net framework 4 升级到更高版本。 4.7.2; 4.8.VS2013

安装.Net Framework 4.7.2时出现“不受信任提供程序信任的根证书中终止”的解决方法

OpenSolutionAsync - 找不到字段:.NET Framework 4.8 / 4.7.2 上的“Microsoft.Build.Utilities.ChangeWaves.Wave16

Rider 要求安装 .NET Framework 4.7.2 Developer Pack,即使它已安装