2012-04-11 19 views
9

Nasza aplikacja, dystrybuowana za pośrednictwem ClickOnce, trwa średnio 10.8 sekund. Po uruchomieniu ngen na .exe (w katalogu, w którym zainstalował go ClickOnce), uruchamia się średnio w 6.4 sekund. Jest to oczywiście ogromne przyspieszenie (40%) i chciałbym skorzystać z ngen-ification, jeśli to możliwe.Czy można wstępnie generować obrazy NGen, aby klienci nie musieli tego robić?

odpowiedź Rona do Is it possible to use NGen with ClickOnce deployment? pokazuje w jaki sposób można to zrobić na komputerze klienta, zakładając Chyba biegnie Windows XP, jak chce prawa administratora na moim Windows 7 polu, tak, że nie wydaje się ogólne rozwiązanie.

Ponadto ngen pobiera 40 sekund na moim pudełku, aby skompilować wszystkie złoŜenia należące do tej aplikacji.

Tak idealnie, chciałbym wstępnie NGEN naszą aplikację dla wszystkich architektur (głównych), jako część procesu budowania, więc to może być dostarczony do klienta bez konieczności użytkownik zaakceptować „OK, aby wykonać jako administrator? " popup, a następnie poczekaj 40 sekund.

Czy to możliwe?

+0

Wyjście NGen jest specyficzne dla architektury. A ponieważ jest mało prawdopodobne, że twoja maszyna do budowy pasuje do maszyny produkcyjnej, prawdopodobnie nie będzie działać tak, jak masz nadzieję. –

+0

@CodyGray Jak wspomniano w moim pytaniu, byłbym skłonny do pregeningu dla wszystkich głównych architektur. Jeśli zrobiliśmy x86 i amd64 tylko to powinno pokryć 95% klientów, to chyba ... –

Odpowiedz

9

Nie można tego zrobić bez dostępu administracyjnego w systemie Windows 7.

Problemem nie jest rzeczywista generacja ngen natywnej obraz ale instalacja do rodzimej pamięci podręcznej obrazu (C: \ windows \ assembly \ nativeImages_v # xxxxxxxxx), który wymaga uprawnień administracyjnych. Więc nawet jeśli znalazłeś sposób na wstępne wygenerowanie natywnych obrazów dla wszystkich architektur docelowych, nie byłbyś w stanie przenieść ich do odpowiedniej lokalizacji, aby środowisko wykonawcze mogło rozważyć ich użycie.

Nie można po prostu umieszczać ich obok siebie w zwykłych plikach binarnych, ponieważ wtedy nie będą one prawidłowo zarządzane - w przypadku wprowadzenia pewnych zmian zasad zabezpieczeń pojawią się problemy, aktualizacje środowiska .net są Zastosowane lub inne zmiany są wprowadzane w odniesieniu do złożeń, które unieważniają obrazy natywne i wymagałyby uruchomienia polecenia "ngen update". Microsoft wydaje się nie obsługiwać przypadku użycia ngen z wdrożeniem ClickOnce w tym czasie.

+0

Coś (google) mówi mi, że masz rację, ale poczekajmy trochę, może coś się pojawi. W końcu, pomimo twierdzeń MS, że jest odwrotnie, odpowiedź na http://stackoverflow.com/questions/443955 pokazała, że ​​jest to możliwe, przynajmniej dla Windows XP. To prawda, że ​​XP nie jest czymś, na co aplikacja ClickOnce powinna polegać w te dni ... –