我有一个.NET核心类库,它被用作可执行程序中的插件。该插件使用第三方SDK中的许可组件,我使用licenses.licx文件将许可信息嵌入到输出dll中。我使用Visual 2019编译插件和可执行文件。
当可执行程序加载插件并尝试使用它时,将从第三方SDK引发许可异常。似乎插件项目中的licenses.licx文件中的许可信息没有被可执行文件使用。
我尝试直接从可执行项目引用插件项目,而不是动态加载插件,但也出现了同样的问题。
让它工作的唯一方法是向可执行项目中添加一个licenses.licx文件,并引用第三部分SDK。这样做将防止引发许可异常,并且所有操作都按预期进行。但是,这不是一个很好的解决方案,因为现在插件使用的每个授权组件都必须由可执行项目直接引用。
是否可以在插件项目中使用授权组件而不将licenses.licx 文件添加到可执行项目中?
发布于 2021-01-05 18:34:52
默认的.NET许可基础设施的设计并没有考虑到插件场景,并且假设许可证都嵌入在可执行文件中,因此这是可能的,这实际上取决于第三方供应商如何实现与.NET许可基础结构的集成,所以最好的操作是与他们的支持团队联系,他们应该能够回答您的问题,并希望能够提供一个代码示例。
.NET许可的三个主要组件是LicenseManager、LicenseProvider和LicenseContext。
微软的一般建议是让供应商实现自己的LicenseProvider和LicenseContext,并与LicenseManager集成以执行验证,但有些供应商只使用.NET附带的默认值,而默认的只扫描嵌入式许可证的可执行程序集。
根据是否/如何实现自定义LicenseProvider和/或LicenseContext,您可能能够在任何控件实例化之前从插件中提供许可信息/密钥(许可证检查通常在控件的构造函数中完成)。
如果供应商使用默认的LicenseProvider和.NET附带的LicenseContext,那么最好的选择是在控件实例化之前尝试使用LicenseManager.CurrentContext.SetSavedLicenseKey(type, key);,但是您需要知道确切的程序集和类型,以及如何构造它所期望的键。
https://stackoverflow.com/questions/65581675
复制相似问题