0

我有一个 .NET Core 类库,它被用作可执行程序中的插件。该插件使用来自第三方 SDK 的许可组件,我使用licenses.licx文件将许可信息嵌入到输出 dll 中。我正在使用 Visual Studio 2019 来编译插件和可执行文件。

当可执行程序加载插件并尝试使用它时,第三方 SDK 会引发许可异常。似乎licenses.licx插件项目中文件的许可信息没有被可执行文件使用。

我尝试直接从可执行项目引用插件项目,而不是动态加载插件,但出现了同样的问题。

我可以让它工作的唯一方法是licenses.licx在可执行项目中添加一个引用第三方 SDK 的文件。这样做可以防止引发许可异常,并且一切都按预期工作。然而,这不是一个好的解决方案,因为现在插件使用的每个许可组件都必须由可执行项目直接引用。

有什么方法可以在插件项目中使用许可组件而不将licenses.licx文件添加到可执行项目中?

4

1 回答 1

0

默认的 .NET 许可基础架构在设计时并未考虑插件方案,并假设许可都嵌入在可执行文件中,因此要做到这一点,实际上取决于第三方供应商如何实现与 .NET 许可的集成基础设施,因此最好的做法是联系他们的支持团队,他们应该能够回答您的问题并希望提供代码示例。

.NET 许可的三个主要组成部分是LicenseManagerLicenseProviderLicenseContext.

Microsoft 的一般建议是让供应商实现自己的LicenseProviderLicenseContext与之集成LicenseManager以执行验证,但一些供应商只使用 .NET 附带的默认值 - 而默认值仅扫描嵌入式许可证的可执行程序集

根据他们是否/如何实现他们的自定义LicenseProvider和/或LicenseContext您可能能够在任何控件被实例化之前从插件中提供许可信息/密钥(许可检查通常在控件的构造函数中完成)。

如果供应商使用默认值LicenseProvider并且LicenseContext.NET 附带,那么最好的办法是LicenseManager.CurrentContext.SetSavedLicenseKey(type, key);在控件实例化之前尝试使用,但您需要知道确切的程序集和类型,以及如何构造它期望的密钥.

于 2021-01-05T18:34:52.387 回答