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?
"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
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
Vielleicht helfen Ihnen einige Varianten mit CodeContracts? – Daniil