2013-03-17 2 views
7

Ich entwickle eine Klassenbibliothek, die für bestimmte Entwicklercomputer lizenziert werden sollte. Es gibt keine Komponenten, so dass die Entwurfszeit-Lizenzprüfung nicht durchgeführt werden kann.Methode aus referenzierter Klassenbibliothek ausführen, bevor .NET-Anwendung zur Lizenzprüfung erstellt wird

Diese Prüfung ist in der Tat nicht verfügbar für reine Klassenbibliotheken:

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

Man hat vorgeschlagen, Debugger.IsAttached zu verwenden, um zu überprüfen, ob die lib auf der Entwicklermaschine verwendet werden: Design-Time validation of library

Aber ich Ich kümmere mich um eine Lösung in der Build-Phase, so dass das Programm nicht erstellt wird, wenn die Lizenz ungültig ist (zB dieser Rechner ist nicht lizenziert). Irgendwelche Vorschläge?

+0

"Diese Überprüfung ist für reine Klassenbibliotheken nicht verfügbar". Nun, es ist _available_ (dh es ist immer noch Teil von 'System.dll') :-) Es ist nur _meaningless_ Ich denke, als' .UsageMode' wird immer 'LicenseUsageMode.RunTime' zurückgeben, außer die Methode mit dieser Prüfung (in Ihrer lib) wird aus dem Entwurfszeitcode einer Steuerung/Komponente aufgerufen. – Sepster

+0

Wird die Lib (frei) für die Verbraucher der Entwickleranwendung verfügbar sein? In welchem ​​Fall hält der Entwickler etwas davon ab, nur eine kostenlose Version der lib zu erhalten und sich dagegen zu entwickeln? +1 übrigens ... Ich bin interessiert zu sehen, welche Antworten Sie bekommen. – Sepster

+0

Vielleicht helfen Ihnen einige Varianten mit CodeContracts? – Daniil

Antwort

1

Ich denke, es ist unmöglich oder sehr schwierig, die Lizenzprüfung in der Kompilier-/Erstellungszeit durchzuführen. Es ist schwer für Sie, während der Erstellungszeit etwas zu erzwingen (wie eine Lizenzprüfung).

Zur Lizenzierung siehe Rhino Licensing. Vielleicht können Sie eine verschleierte Version ohne Lizenzprüfung und eine normale Version mit einer Lizenzprüfung erstellen.

Aber jeder Lizenzschutz kann gehackt werden.

+0

Ich werde IntelliLock verwenden und Debugger.IsAttached verwenden, um hardwarebasierte Lizenzierung auf Debug zu überprüfen. –

Verwandte Themen