为每个开发人员授予 NuGet 包许可

问题描述 投票:0回答:1

我正在创建一个通过 NuGet 包分发的产品。我想知道是否有一种方法可以识别正在使用我的程序集编译项目的人。我需要此信息用于许可目的。是否可以检查特定开发人员是否正在 Visual Studio 中编译项目?

.net visual-studio nuget-package licensing
1个回答
0
投票

是否可以检查特定开发人员是否正在 Visual Studio 中编译项目?

不是原生的。

您通常会实现一个许可服务器,开发人员必须在其中注册才能获取许可证密钥(有点像 Google 的

Xamarin.Google.Android.Vending.Licensing
所做的那样)。该服务器可以颁发与特定开发人员标识符(例如电子邮件地址)相关的许可证密钥。
您还可以修改 NuGet 包以在初始化过程中需要许可证密钥。该密钥将根据简单的加密/验证方案在本地进行检查,或者通过联系许可服务器进行远程检查。

A Visual Studio 扩展 将有助于获取和管理包的许可证密钥。该扩展可以指导开发人员完成注册并将所需的许可证密钥插入到其项目中的过程。
如果要添加某种形式的编译时验证,请考虑使用 MSBuild 任务或目标。您可以在构建过程中运行的 NuGet 包中包含自定义 MSBuild 任务,以验证许可证密钥的存在性和有效性。

<!-- Example of an MSBuild target in your NuGet package -->
<Target Name="CheckLicense" BeforeTargets="BeforeBuild">
  <Exec Command="dotnet your-package-license-check.dll --licenseKey $(LicenseKey)" />
</Target>

目前还不清楚如何获取使用我的程序集编译项目的开发人员的电子邮件。

正确:由于隐私和安全原因,直接获取使用您的程序集编译项目的开发人员的电子邮件是不可行的。编译过程不会暴露开发人员的个人信息,Visual Studio 也没有提供内置机制来在编译过程中捕获此类详细信息。

相反,您采用的许可机制应该设计为通过“注册”过程将许可证密钥与开发人员的电子邮件或标识符相关联,而不是尝试在编译时捕获此信息。 它将涉及以下步骤:

  1. 注册

    :要求开发者在您的许可服务器或门户上注册。在此过程中,他们会提供电子邮件和任何其他所需的详细信息。作为回报,他们会收到一个唯一的许可证密钥。

  2. 许可证密钥激活

    :开发人员获得许可证密钥后,需要在其开发环境中激活它。该激活过程可以是手动的(例如,将密钥输入配置文件或通过 Visual Studio 扩展中的 GUI)或在某些方面是自动化的。

  3. 验证

    :当开发人员编译包含 NuGet 包的项目时,该包可以检查有效的许可证密钥。该检查可以是:

      本地
    • :验证密钥的格式或使用简单的加密/验证方案。
    • 远程
    • :将密钥发送到您的服务器进行验证。该方法可以记录密钥使用情况并执行更复杂的检查,但需要互联网连接。
  4. 对于编译时检查,您的 MSBuild 任务或目标不会直接捕获开发人员的电子邮件。相反,它会验证项目中预注册和激活的许可证密钥的存在和有效性:

<!-- Example of an MSBuild target in your NuGet package --> <Target Name="CheckLicense" BeforeTargets="BeforeBuild"> <Exec Command="dotnet your-package-license-check.dll --licenseKey $(LicenseKey)" /> </Target>

© www.soinside.com 2019 - 2024. All rights reserved.