Poradnik: Konfigurowanie aktywacji bez rejestracji składników COM opartych na platformie .NET Framework
Aktywacja bezpłatna rejestracji dla składników opartych na programie .NET Framework jest tylko nieco bardziej skomplikowana niż w przypadku składników COM. Konfiguracja wymaga dwóch manifestów:
Aplikacje COM muszą mieć manifest aplikacji w stylu Win32, aby zidentyfikować składnik zarządzany.
Składniki oparte na programie .NET Framework muszą mieć manifest składnika na potrzeby informacji o aktywacji wymaganych w czasie wykonywania.
W tym temacie opisano sposób kojarzenia manifestu aplikacji z aplikacją; skojarz manifest składnika ze składnikiem; i osadź manifest składnika w zestawie.
Tworzenie manifestu aplikacji
Za pomocą edytora XML utwórz (lub zmodyfikuj) manifest aplikacji należący do aplikacji COM, która współdziała z co najmniej jednym składnikiem zarządzanym.
Wstaw następujący standardowy nagłówek na początku pliku:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> </assembly>
Aby uzyskać informacje o elementach manifestu i ich atrybutach, zobacz Application Manifests (Manifesty aplikacji).
Zidentyfikuj właściciela manifestu. W poniższym przykładzie
myComApp
wersja 1 jest właścicielem pliku manifestu.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity type="win32" name="myOrganization.myDivision.myComApp" version="1.0.0.0" processorArchitecture="msil" /> </assembly>
Identyfikowanie zestawów zależnych. W poniższym przykładzie
myComApp
zależy odmyManagedComp
elementu .<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity type="win32" name="myOrganization.myDivision.myComApp" version="1.0.0.0" processorArchitecture="x86" publicKeyToken="8275b28176rcbbef" /> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="myOrganization.myDivision.myManagedComp" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="8275b28176rcbbef" /> </dependentAssembly> </dependency> </assembly>
Zapisz i nadaj plikowi manifestu nazwę. Nazwa manifestu aplikacji to nazwa pliku wykonywalnego zestawu, po którym następuje rozszerzenie manifestu. Na przykład nazwa pliku manifestu aplikacji dla myComApp.exe to myComApp.exe.manifest.
Manifest aplikacji można zainstalować w tym samym katalogu co aplikacja COM. Alternatywnie możesz dodać go jako zasób do pliku .exe aplikacji. Aby uzyskać więcej informacji, zobacz About Side-by-Side Assemblies (Informacje o zestawach równoległych).
Tworzenie manifestu składnika
Za pomocą edytora XML utwórz manifest składnika w celu opisania zarządzanego zestawu.
Wstaw następujący standardowy nagłówek na początku pliku:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> </assembly>
Zidentyfikuj właściciela pliku. Element
<assemblyIdentity>
elementu w pliku manifestu<dependentAssembly>
aplikacji musi być zgodny z elementem w manifeście składnika. W poniższym przykładziemyManagedComp
wersja 1.2.3.4 jest właścicielem pliku manifestu.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity name="myOrganization.myDivision.myManagedComp" version="1.2.3.4" publicKeyToken="8275b28176rcbbef" processorArchitecture="msil" /> </assembly>
Zidentyfikuj każdą klasę w zestawie. Użyj elementu ,
<clrClass>
aby unikatowo zidentyfikować każdą klasę w zarządzanym zestawie. Element, który jest podelementem<assembly>
elementu, ma atrybuty opisane w poniższej tabeli.Atrybut opis Wymagania clsid
Identyfikator określający klasę do aktywowania. Tak description
Ciąg, który informuje użytkownika o składniku. Pusty ciąg jest domyślny. Nie. name
Ciąg reprezentujący klasę zarządzaną. Tak progid
Identyfikator, który ma być używany do aktywacji powiązanej z opóźnieniem. Nie. threadingModel
Model wątkowania COM. Wartość domyślna to "Oba". Nie. runtimeVersion
Określa wersję środowiska uruchomieniowego języka wspólnego (CLR) do użycia. Jeśli nie określisz tego atrybutu, a clR nie jest jeszcze załadowany, składnik zostanie załadowany z najnowszą zainstalowaną clR przed CLR w wersji 4. Jeśli określisz wersję 1.0.3705, 1.1.4322 lub 2.0.50727, wersja zostanie automatycznie przekazana do najnowszej zainstalowanej wersji CLR wcześniejszej niż CLR w wersji 4 (zazwyczaj w wersji 2.0.50727). Jeśli jest już załadowana inna wersja środowiska CLR, a określona wersja może zostać załadowana równolegle, zostanie załadowana określona wersja; w przeciwnym razie jest używana załadowana clR. Może to spowodować niepowodzenie ładowania. Nie. tlbid
Identyfikator biblioteki typów, która zawiera informacje o typie klasy. Nie. Wszystkie tagi atrybutów są uwzględniane w wielkości liter. Identyfikatory CLSID, progID, modele wątkowe i wersja środowiska uruchomieniowego można uzyskać, wyświetlając wyeksportowaną bibliotekę typów dla zestawu za pomocą programu OBJECTViewer OLE/COM (Oleview.exe).
Poniższy manifest składnika identyfikuje dwie klasy i
testClass1
testClass2
.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity name="myOrganization.myDivision.myManagedComp" version="1.2.3.4" publicKeyToken="8275b28176rcbbef" /> <clrClass clsid="{65722BE6-3449-4628-ABD3-74B6864F9739}" progid="myManagedComp.testClass1" threadingModel="Both" name="myManagedComp.testClass1" runtimeVersion="v1.0.3705"> </clrClass> <clrClass clsid="{367221D6-3559-3328-ABD3-45B6825F9732}" progid="myManagedComp.testClass2" threadingModel="Both" name="myManagedComp.testClass2" runtimeVersion="v1.0.3705"> </clrClass> <file name="MyManagedComp.dll"> </file> </assembly>
Zapisz i nadaj plikowi manifestu nazwę. Nazwa manifestu składnika to nazwa biblioteki zestawów, po której następuje rozszerzenie manifestu. Na przykład myManagedComp.dll to myManagedComp.manifest.
Manifest składnika należy osadzić jako zasób w zestawie.
Aby osadzić manifest składnika w zestawie zarządzanym
Utwórz skrypt zasobu zawierający następującą instrukcję:
1 RT_MANIFEST myManagedComp.manifest
W tej instrukcji
myManagedComp.manifest
jest nazwą osadzonego manifestu składnika. W tym przykładzie nazwa pliku skryptu tomyresource.rc
.Skompiluj skrypt przy użyciu kompilatora zasobów systemu Microsoft Windows (Rc.exe). W wierszu polecenia wpisz następujące polecenie:
rc myresource.rc
Rc.exe tworzy
myresource.res
plik zasobu.Skompiluj ponownie plik źródłowy zestawu i określ plik zasobu przy użyciu opcji /win32res :
/win32res:myresource.res
myresource.res
Ponownie jest nazwą pliku zasobu zawierającego zasoby osadzone.