2013-03-17 10 views
7

Zajmuję się tworzeniem biblioteki klas, która powinna być licencjonowana dla określonych komputerów programistów. Nie ma żadnych elementów, aby nie można było przeprowadzić kontroli licencji na czas projektowania.Wykonaj metodę z przywoływanej biblioteki klas przed kompilacją aplikacji .NET do sprawdzania licencji

Kontrola ta jest w rzeczywistości niedostępna dla bibliotek czystych klasy:

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

Jeden zasugerował użycie Debugger.IsAttached aby sprawdzić, czy lib jest używany na komputerze programu: Design-Time validation of library

Ale "Zajmuje się rozwiązaniem na etapie budowy, tak aby program nie został zbudowany, jeśli licencja jest nieważna (eG ta maszyna nie jest licencjonowana). Jakieś sugestie?

+0

"Ta kontrola jest w rzeczywistości niedostępna dla czystych bibliotek klas". Cóż, jest _available_ (tj. Nadal jest częścią 'System.dll') :-) Jest po prostu _meaningless_ Myślę, że' .UsageMode' zawsze zwróci 'LicenseUsageMode.RunTime', chyba że metoda zawiera to sprawdzanie (w twojej lib) jest wywoływana z kodu czasu projektowania kontrolki/komponentu. – Sepster

+0

Czy lib będzie (swobodnie) dostępny dla konsumentów aplikacji deweloperów? W takim razie czy jest coś, co powstrzymuje programistę przed otrzymaniem darmowej wersji biblioteki i opracowaniem tego? +1 przy okazji ... Jestem zainteresowany, aby zobaczyć, jakie odpowiedzi otrzymasz. – Sepster

+0

Może niektóre odmiany z CodeContracts będą pomocne? – Daniil

Odpowiedz

1

Wydaje mi się, że nie jest możliwe lub bardzo trudne sprawdzenie licencji w czasie kompilacji/kompilacji. Trudno jest wymusić coś, co się wydarzy (np. Sprawdzenie licencji) w czasie budowy.

Aby uzyskać licencję, spójrz na numer Rhino Licensing. Może uda ci się stworzyć obfuskowaną wersję bez sprawdzania licencji i normalną wersję z kontrolą licencji.

Jednak każda ochrona licencji może zostać zhakowana.

+0

Użyję IntelliLock i użyję Debugger.IsAttached aby sprawdzić licencjonowanie sprzętowe podczas debugowania. –

Powiązane problemy