我将创建一个LicFileLicenseProvider
基于许可证提供程序。我已经阅读了许多关于此内容的文章、问题和答案。最后,我创建了我的许可证提供程序,MyLicFileLicenseProvider
它有两种模式,RunTime 和 DesignTime。我将只为设计时设置许可证。我做到了,而且效果也很好。因此,许可证将(并且应该)仅在“licenses.licx”文件存在的编译期间使用。
A. 正常情况
1)创建一个类:
[LicenseProvider(typeof(MyLicFileLicenseProvider))]
public class XXXObject
{
private License license = null;
/// <summary>
/// Creates an instance of the XXXObject object.
/// </summary>
public XXXObject()
{
try
{
license = LicenseManager.Validate(typeof(XXXObject), this);
}
catch (Exception ex)
{
throw new SecurityException("Invalid license!");
}
}
}
2)然后,创建licenses.licx文件,内容对象全名、命名空间、版本、文化、PublicKeyToken
3) 创建许可证文件,XXX.XXXObject.lic 文件。
现在,我已经创建了所有必要的东西并编译了项目。它已编译并且运行良好。
B. 正常情况。我的问题是,正如我在上面提到的,我已经用属性修饰了 XXXObject 类[LicenseProvider(typeof(MyLicFileLicenseProvider))]
。然后,我从项目中排除 licenses.licx 文件。然后,编译项目。但是,它仍在编译中。这是没有意义的,因为我用 [LicenseProvider(typeof(MyLicFileLicenseProvider))] 装饰了这个类,它应该在寻找 licenses.licx,但它没有并且没有错误地编译?