2013-03-17 78 views
7

我正在开发一个应该授予特定开发人员计算机的类库。没有组件,因此无法完成设计时间许可检查。在构建用于许可证检查的.NET应用程序之前,从引用的类库执行方法

该检查实际上是不可用纯类库:

if(LicenseContext.UsageMode == LicenseUsageMode.Designtime) ... 

人提出使用Debugger.IsAttached以检查lib是开发机上使用: Design-Time validation of library

但我在构建阶段寻找解决方案,这样如果许可证无效(例如,该机器未获得许可证),程序将无法构建。有什么建议么?

+0

“这个检查实际上对于纯类库不可用”。嗯,它是_available_(即它仍然是'System.dll'的一部分):-)这只是_meanless_我认为,因为'.UsageMode'将始终返回'LicenseUsageMode.RunTime',除非包含此检查的方法从控件/组件的设计时代码调用。 – Sepster 2013-03-24 19:51:09

+0

开发人员的应用程序的用户是否可以(免费)使用该库?在这种情况下,是否有任何东西阻止开发人员获得免费版本的lib并针对该版本进行开发? +1顺便说一下......我很想看看你得到了什么回应。 – Sepster 2013-03-24 20:06:14

+0

也许CodeContracts的一些变化会帮助你? – Daniil 2013-03-25 00:31:01

回答

1

我认为在编译/编译时进行许可检查是不可能的或非常困难的。在构建时,你很难强迫某些事情发生(如许可证检查)。

关于许可请看Rhino Licensing。也许你可以制作一个没有许可证检查的混淆版本,以及一个带有许可证检查的正常版本。

但是任何许可证保护都可能被黑客入侵。

+0

我将使用IntelliLock并使用Debugger.IsAttached来检查基于硬件的调试许可。 – 2013-03-31 18:01:49

相关问题