Uruchamianie szybszych programów zainstalowanych za pomocą narzędzia Ngen.exe
środowisko
- Visual Studio
-
- Społeczność programu Visual Studio 2017
- Społeczność programu Visual Studio 2019
- Zestaw narzędzi WiX
- 3.11.2
※ Działa w innych wersjach, ale jest niepotwierdzony
Na początku
Aplikacja .NET Framework tworzy i instaluje obrazy natywne przy użyciu Ngen.exe. Możesz przyspieszyć uruchamianie i wykonywanie.
Jednak aby utworzyć obraz natywny, musisz użyć Ngen.exe w środowisku, w którym uruchamiasz aplikację. Nie można rozpowszechniać wstępnie zdustrysowanych obrazów. Dlatego czy chcesz, aby użytkownicy uruchamiali Ngen.exe ręcznie? Musi być uruchomiony podczas instalacji.
W tej sekcji opisano kroki, które należy wykonać Ngen.exe na docelowym exe lub dll w ustawieniach wiX podczas instalacji.
Należy zauważyć, że Ngen.exe jest prawidłowy tylko dla aplikacji .NET Framework i jest pierwotnie zestawem natywnym. Nie ma sensu używać go do aplikacji .NET Core.
Przygotowanie z wyprzedzeniem
- Załóżmy, że utworzono instalator za pomocą WiX.
Dodawanie odwołania do biblioteki
Dodaj WixNetFxExtension.dll do swojego odwołania. Ścieżka folderu to C:\Program Files (x86)\WiX Toolset v3.11\bin.
Edytuj Product.wxs
Dodaj ustawienia do plików, w których działa Ngen.exe.
Wix/@xmlns
Dodaj przestrzeń nazw NetFxExtension.
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">
Dodawanie parametrów do komponentów (plików), które tworzą obrazy natywne
Dodaj netfx:NativeImage do elementów podrzędnych pliku docelowego.
<Component Win64="yes" Id="OGGVORBISPROJECT.DLL" DiskId="1" Guid="6A1D2FD8-9FA7-40D5-A0EA-356268B3C0B4">
<File Id="OGGVORBISPROJECT.DLL" Name="OggVorbisProject.dll" Source="LittleSaviorTrial\Dll\OggVorbisProject.dll">
<netfx:NativeImage Id="NGEN_OGGVORBISPROJECT.DLL" Platform="64bit" Priority="0"/>
</File>
</Component>
Jeśli exe lub dll odnoszą się do (zależy) od innych bibliotek dll ze względu na charakter Ngen.exe, możesz określić tylko exe lub dll, z którego chcesz się do niego odwołać. Na przykład, jeśli A.exe odnosi się do B.dll, ustawienie NativeImage na A.exe automatycznie stosuje się tylko do B.dll.
Jeśli jednak A.exe dynamicznie ładuje B.dll przy użyciu Assembly.Load i tym podobnych po wykonaniu, B.dll nie jest zależnością. Użycie Ngen.exe dla A.exe nie kompiluje B.dll. W takim przypadku ustaw nativeImage na B.dll.
@Id
Nazwa identyfikacyjna obrazu natywnego. Nie nakładaj się na inne identyfikatory.
@Platform
Określ "32bit", "64bit" lub "all". Zmień ustawienia 32-bitowe lub 64-bitowe dla instalowanych aplikacji. Wszystkie tworzą oba obrazy natywne, więc określ biblioteki, które przełączają się zgodnie ze stanem wykonania, takim jak "Dowolny procesor".
@Priority
Kiedy uruchomić Ngen.exe podczas instalacji. Możesz określić 0-3, ale aby uzyskać więcej informacji, zapoznaj się z oficjalną stroną internetową.
Streszczenie
Po utworzeniu instalatora można zobaczyć, że jeśli instalacja zakończy się pomyślnie, obraz natywny zostanie utworzony i zarejestrowany w folderze zestawu.