Manifes Perakitan
Manifes perakitan adalah file XML yang menjelaskan perakitan berdampingan. Manifes perakitan menjelaskan nama dan versi rakitan, file, dan sumber daya perakitan secara berdampingan, serta ketergantungan rakitan pada rakitan berdampingan lainnya. Penginstalan, aktivasi, dan eksekusi rakitan berdampingan yang benar mengharuskan manifes perakitan selalu menyertai perakitan pada sistem.
Untuk daftar lengkap skema XML, lihat Skema File Manifes.
Manifes perakitan memiliki elemen dan atribut berikut.
Elemen | Atribut | Diperlukan |
---|---|---|
Majelis | Ya | |
manifestVersion | Ya | |
noInheritable | Tidak | |
assemblyIdentity | Ya | |
jenis | Ya | |
nama | Ya | |
bahasa | Tidak | |
processorArchitecture | Tidak | |
versi | Ya | |
Publickeytoken | Tidak | |
Ketergantungan | Tidak | |
dependentAssembly | Tidak | |
file | Tidak | |
nama | Ya | |
hashalg | Tidak | |
Hash | Tidak | |
comClass | Tidak | |
deskirpsi | Tidak | |
Clsid | Ya | |
threadingModel | Tidak | |
tlbid | Tidak | |
progid | Tidak | |
miscStatus | Tidak | |
miscStatusIcon | Tidak | |
miscStatusContent | Tidak | |
miscStatusDocPrint | Tidak | |
miscStatusThumbnail | Tidak | |
typelib | Tidak | |
tlbid | Ya | |
versi | Ya | |
helpdir | Ya | |
resourceid | Tidak | |
Bendera | Tidak | |
comInterfaceExternalProxyStub | Tidak | |
iid | Ya | |
baseInterface | Tidak | |
numMethods | Tidak | |
nama | Tidak | |
tlbid | Tidak | |
proxyStubClsid32 | Tidak | |
comInterfaceProxyStub | Tidak | |
iid | Ya | |
nama | Ya | |
tlbid | Tidak | |
baseInterface | Tidak | |
numMethods | Tidak | |
proxyStubClsid32 | Tidak | |
threadingModel | Tidak | |
windowClass | Tidak | |
Berversi | Tidak |
Lokasi File
Manifes perakitan dapat diinstal di tiga lokasi:
- Sebagai manifes yang menyertai rakitan bersama, manifes perakitan harus diinstal sebagai file terpisah di cache perakitan berdampingan. Ini biasanya folder WinSxS di direktori Windows.
- Sebagai manifes yang menyertai rakitan privat, manifes perakitan harus diinstal dalam struktur direktori aplikasi. Ini biasanya merupakan file terpisah dalam folder yang sama dengan file yang dapat dieksekusi aplikasi.
- Sebagai sumber daya dalam DLL, rakitan tersedia untuk penggunaan privat DLL. Manifes perakitan tidak dapat disertakan sebagai sumber daya dalam EXE. File EXE dapat menyertakan manifes aplikasi sebagai sumber daya.
Sintaks Nama File
Nama manifes rakitan adalah nama file yang valid diikuti oleh .manifest
.
Misalnya, manifes perakitan yang merujuk ke myassembly akan menggunakan sintaks nama file berikut: myassembly.<resource ID>.manifest
.
Anda dapat menghilangkan <resource ID>
bidang jika manifes perakitan sedang diinstal sebagai file terpisah atau jika ID sumber daya adalah 1.
Catatan
Karena cara pencarian berdampingan untuk rakitan privat, pembatasan penamaan berikut berlaku saat mengemas DLL sebagai rakitan privat. Cara yang disarankan untuk melakukan ini adalah dengan menempatkan manifes perakitan di DLL sebagai sumber daya. Dalam hal ini, ID sumber daya harus sama dengan 1 dan nama rakitan privat mungkin sama dengan nama DLL. Misalnya, jika nama DLL Microsoft.Windows.mysample.dll, nilai atribut nama yang digunakan dalam elemen assemblyIdentity dari manifes mungkin juga Microsoft.Windows.mysample. Cara alternatif adalah dengan menempatkan manifes perakitan dalam file terpisah. Dalam hal ini, nama rakitan dan manifesnya harus berbeda dari nama DLL. Misalnya, Microsoft.Windows.mysampleAsm, Microsoft.Windows.mysampleAsm.manifest, dan Microsoft.Windows.Mysample.dll. Untuk informasi selengkapnya tentang cara pencarian berdampingan untuk rakitan privat, lihat Urutan Pencarian Perakitan.
Elemen
Nama elemen dan atribut peka huruf besar/kecil. Nilai elemen dan atribut tidak peka huruf besar/kecil, kecuali untuk nilai atribut jenis.
-
Majelis
-
Elemen kontainer. Subelemen pertamanya harus berupa elemen assemblyIdentity atau noInheritable . Manifes perakitan secara unik menggambarkan rakitan berdampingan yang diidentifikasi oleh assemblyIdentity. Wajib diisi.
Elemen assembly harus berada di namespace "urn:schemas-microsoft-com:asm.v1". Elemen anak dari assembly juga harus berada di namespace layanan ini, dengan pewarisan atau dengan pemberian tag.
Elemen assembly memiliki atribut berikut.
Atribut Deskripsi manifestVersion Atribut manifestVersion harus diatur ke 1.0. -
noInheritable
-
Sertakan elemen ini dalam manifes perakitan untuk menunjukkan bahwa perakitan mengelola konteks aktivasi dan objeknya. Elemen noInheritable harus merupakan subelemen dari elemen assembly . Elemen assemblyIdentity harus datang setelah elemen noInheritable . Elemen noInheritable diperlukan dalam manifes assembly jika assembly digunakan oleh manifes aplikasi apa pun yang menyertakan elemen noInherit . Elemen noInheritable dalam manifes aplikasi tidak berpengaruh. Elemen noInheritable tidak memiliki elemen turunan.
-
assemblyIdentity
-
Menjelaskan dan mengidentifikasi rakitan berdampingan secara unik.
Sebagai subelemen pertama dari elemen assembly , assemblyIdentity menjelaskan dan secara unik mengidentifikasi rakitan berdampingan yang memiliki manifes perakitan ini. Ini disebut assemblyIdentity konteks DEF dari manifes perakitan.
Sebagai subelemen pertama dari elemen dependentAssembly , assemblyIdentity menjelaskan dan secara unik mengidentifikasi rakitan berdampingan yang digunakan oleh assemblyIdentity konteks DEF. Ini disebut assemblyIdentity konteks REF dari manifes perakitan. Rakitan konteks DEF mengharuskan rakitan konteks REF berfungsi dengan benar. Perhatikan bahwa setiap assemblyIdentity konteks REF harus sama persis dengan assemblyIdentity konteks DEF yang sesuai dalam manifes assembly assembly yang direferensikan.
Elemen ini tidak memiliki subelemen. Elemen assemblyIdentity memang memiliki atribut berikut.
Atribut Deskripsi jenis Menentukan jenis rakitan. Nilainya harus win32 dan dalam huruf kecil. Wajib diisi. nama Secara unik menamai assembly. Gunakan format berikut untuk nama rakitan: Organization.Division.Name. Misalnya, Microsoft.Windows.mysampleAsm. Wajib diisi. Perhatikan bahwa dalam kasus DLL yang dikemas sebagai rakitan privat dengan file manifes terpisah, nama rakitan harus berbeda dari nama DLL dan manifes. bahasa Mengidentifikasi bahasa assembly. Pilihan. Jika rakitan khusus bahasa, tentukan kode bahasa DHTML. Dalam assemblyIdentity konteks DEF dari manifes perakitan yang ditujukan untuk penggunaan di seluruh dunia (bahasa netral) menghilangkan atribut bahasa.
Dalam assemblyIdentity konteks REF dari manifes perakitan yang ditujukan untuk penggunaan di seluruh dunia (bahasa netral) menetapkan nilai bahasa ke "*".processorArchitecture Menentukan prosesor. Nilai yang valid adalah x86 untuk Windows 32-bit dan ia64 untuk Windows 64-bit. Pilihan. versi Menentukan versi assembly. Gunakan format versi empat bagian: mmmmm.nnnnn.ooooo.ppppp. Masing-masing bagian yang dipisahkan oleh titik dapat 0-65535 inklusif. Untuk informasi selengkapnya, lihat Versi Assembly. Wajib diisi. Publickeytoken String heksadesimal 16 karakter yang mewakili 8 byte terakhir hash SHA-1 dari kunci publik tempat perakitan ditandatangani. Kunci umum yang digunakan untuk menandatangani katalog harus 2048 bit atau lebih besar. Diperlukan untuk rakitan bersama berdampingan. -
Ketergantungan
-
Elemen kontainer termasuk setidaknya satu dependentAssembly. Subelemen pertama harus berupa elemen dependentAssembly . Dependensi tidak memiliki atribut. Pilihan.
-
dependentAssembly
-
Sublemen pertama harus merupakan elemen assemblyIdentity yang menjelaskan dan secara unik mengidentifikasi perakitan berdampingan yang digunakan oleh perakitan berdampingan yang memiliki manifes perakitan ini. Setiap dependentAssembly harus berada di dalam tepat satu dependensi. Pilihan.
-
File
-
Berisi file yang digunakan oleh rakitan berdampingan. Berisi subelemen comClass, typelib, windowClass, comInterfaceProxyStub . Pilihan.
Elemen file memiliki atribut berikut.
Atribut Deskripsi nama Nama file, misalnya, Conctl32.dll. hashalg Algoritma yang digunakan untuk membuat hash file. Nilai ini harus SHA1. Hash Hash file yang disebut berdasarkan nama. String panjang heksadesimal tergantung pada algoritma hash. -
comClass
-
Subelemen elemen file . Pilihan.
Elemen comClass memiliki atribut berikut.
Atribut Deskripsi deskirpsi Nama kelas. Clsid GUID yang secara unik mengidentifikasi Kelas. Wajib diisi. Nilai harus dalam format GUID yang valid. threadingModel Model utas yang digunakan oleh kelas COM dalam proses. Jika properti ini null, maka tidak ada model utas yang digunakan. Komponen dibuat di utas utama klien dan panggilan dari utas lain dirangkai ke utas ini. Opsional. Nilai yang valid adalah: "Apartemen", "Gratis", "Keduanya", dan "Netral". tlbid GUID pustaka jenis untuk komponen COM ini. Nilai harus dalam format GUID. Pilihan. progid Pengidentifikasi terprogram yang bergantung versi yang terkait dengan komponen COM. Format ProgID adalah <vendor>.<komponen>.<versi>. miscStatus Duplikat dalam perakitan memanifestasikan informasi yang disediakan oleh kunci registri MiscStatus. Jika nilai untuk atribut miscStatusIcon, miscStatusContent, miscStatusDocprint, atau miscStatusThumbnail tidak ditemukan, nilai default terkait yang tercantum di miscStatus digunakan untuk atribut yang hilang. Nilai dapat menjadi daftar nilai atribut yang dibatasi koma dari tabel di bawah ini. Anda dapat menggunakan atribut ini jika kelas COM adalah kelas OCX yang memerlukan nilai kunci registri Miscstatus. miscStatusIcon Duplikat dalam rakitan menunjukkan informasi yang disediakan oleh DVASPECT_ICON. Ini dapat memberikan ikon objek. Nilai dapat menjadi daftar nilai atribut yang dibatasi koma dari tabel di bawah ini. Anda dapat menggunakan atribut ini jika kelas COM adalah kelas OCX yang memerlukan nilai kunci registri Miscstatus. miscStatusContent Duplikat dalam rakitan menunjukkan informasi yang diberikan oleh DVASPECT_CONTENT. Ini dapat menyediakan dokumen campuran yang dapat ditampilkan untuk layar atau printer. Nilai dapat menjadi daftar nilai atribut yang dibatasi koma dari tabel di bawah ini. Anda dapat menggunakan atribut ini jika kelas COM adalah kelas OCX yang memerlukan nilai kunci registri Miscstatus. miscStatusDocprint Duplikat dalam rakitan menunjukkan informasi yang diberikan oleh DVASPECT_DOCPRINT. Ini dapat memberikan representasi objek yang dapat ditampilkan pada layar seolah-olah dicetak ke printer. Nilai dapat menjadi daftar nilai atribut yang dibatasi koma dari tabel di bawah ini. Anda dapat menggunakan atribut ini jika kelas COM adalah kelas OCX yang memerlukan nilai kunci registri Miscstatus. miscStatusThumbnail Duplikat dalam rakitan menunjukkan informasi yang disediakan oleh DVASPECT_THUMBNAIL. Ini dapat memberikan gambar mini objek yang dapat ditampilkan di alat penelusuran. Nilai dapat menjadi daftar nilai atribut yang dibatasi koma dari tabel di bawah ini. Anda dapat menggunakan atribut ini jika kelas COM adalah kelas OCX yang memerlukan nilai kunci registri Miscstatus. Elemen comClass dapat memiliki <elemen progid>... sebagai anak-anak, yang mencantumkan progid dependen versi.
Contoh berikut menunjukkan elemen comClass yang disertakan dalam elemen file .
<file name="sampleu.dll"> <comClass description="Font Property Page" clsid="{0BE35200-8F91-11CE-9DE3-00AA004BB851}" threadingModel = "Both" tlbid = "{44EC0535-400F-11D0-9DCD-00A0C90391D3}"/> <comClass description="Color Property Page" clsid="{0BE35201-8F91-11CE-9DE3-00AA004BB851}" progid="ABC.Registrar"/> </file>
Jika kelas COM Anda adalah kelas OCX yang memerlukan subkunci registri MiscStatus untuk menentukan cara membuat dan menampilkan objek, Anda dapat mengaktifkan objek dengan menduplikasi informasi ini dalam manifes perakitan. Tentukan karakteristik objek dengan menggunakan atribut miscStatus, miscStatusIcon, miscStatusContent, miscStatusDocprint, dan miscStatusThumbnail dari elemen comClass . Atur atribut ini ke daftar nilai atribut yang dipisahkan koma dari tabel berikut. Atribut ini menduplikasi informasi yang akan disediakan oleh enumerasi DVASPECT. Jika tidak ada nilai yang ditemukan untuk miscStatusIcon, miscStatusContent, miscStatusDocprint, atau miscStatusThumbnail, nilai default yang ditentukan dalam miscStatus digunakan. Gunakan nilai atribut dari tabel berikut. Ini sesuai dengan bendera bit enumerasi OLEMISC .
Menilai Atribut Konstanta OLEMISC recomposeonresize OLEMISC_RECOMPOSEONRESIZE hanyaiconic OLEMISC_ONLYICONIC insertnotreplace OLEMISC_INSERTNOTREPLACE static OLEMISC_STATIC cantlinkinside OLEMISC_CANTLINKINSIDE canlinkbyole1 OLEMISC_CANLINKBYOLE1 islinkobject OLEMISC_ISLINKOBJECT di dalam OLEMISC_INSIDEOUT activatewhenvisible OLEMISC_ACTIVATEWHENVISIBLE renderingisdeviceindependent OLEMISC_RENDERINGISDEVICEINDEPENDENT invisibleatruntime OLEMISC_INVISIBLEATRUNTIME alwaysrun OLEMISC_ALWAYSRUN actslikebutton OLEMISC_ACTSLIKEBUTTON actslikelabel OLEMISC_ACTSLIKELABEL nouiactivate OLEMISC_NOUIACTIVATE dapat diratakan OLEMISC_ALIGNABLE simpleframe OLEMISC_SIMPLEFRAME setclientsitefirst OLEMISC_SETCLIENTSITEFIRST imemode TOLEMISC_IMEMODE ignoreativatewhenvisible OLEMISC_IGNOREACTIVATEWHENVISIBLE wantstomenumerge OLEMISC_WANTSTOMENUMERGE supportsmultilevelundo OLEMISC_SUPPORTSMULTILEVELUNDO -
typelib
-
Subelemen elemen file . Pilihan.
Elemen typelib memiliki atribut yang ditunjukkan dalam tabel berikut.
Atribut Deskripsi tlbid ID unik pustaka jenis. Wajib diisi. versi Nomor versi dua bagian dari pustaka jenis. Jika hanya nomor versi minor yang meningkat, semua fitur pustaka jenis sebelumnya didukung dengan cara yang kompatibel. Jika nomor versi utama berubah, kode yang dikompilasi terhadap pustaka jenis harus dikompilasi ulang. Nomor versi pustaka jenis mungkin berbeda dari nomor versi aplikasi. Wajib diisi. helpdir Direktori tempat file Bantuan untuk jenis di pustaka jenis berada. Jika aplikasi mendukung pustaka jenis untuk beberapa bahasa, pustaka dapat merujuk ke nama file yang berbeda di direktori file Bantuan. Jika tidak ada nilai, tentukan "". Wajib diisi. resourceid Representasi string heksadesimal dari pengidentifikasi lokal (LCID). Ini adalah satu hingga empat digit heksadesimal tanpa awalan 0x dan tidak ada nol di depannya. LCID mungkin memiliki pengidentifikasi subbahasa netral. Untuk informasi selengkapnya, lihat Pengidentifikasi Lokal. Pilihan. Bendera Representasi string dari bendera pustaka jenis untuk pustaka jenis ini. Secara khusus, ini harus menjadi salah satu dari "RESTRICTED", "CONTROL", "HIDDEN" dan "HASDISKIMAGE". Ini adalah nilai enumerasi LIBFLAGS , dan merupakan bendera yang sama yang ditentukan dalam parameter uLibFlags dari metode ICreateTypeLib::SetLibFlags . Opsional. Contoh berikut menunjukkan elemen typelib yang disertakan dalam elemen file .
<file name="sampleu.dll"> <typelib tlbid="{44EC0535-400F-11D0-9DCD-00A0C90391D3}" version="1.0" helpdir=""/> </file>
-
comInterfaceExternalProxyStub
-
comInterfaceExternalProxyStub adalah sublemen dari elemen assembly dan digunakan untuk antarmuka otomatisasi. Misalnya, IDispatch dan antarmuka turunannya. Pilihan.
Implementasi proxy-stub default memadai untuk sebagian besar antarmuka otomatisasi, seperti antarmuka yang berasal dari IDispatch. Stub proksi antarmuka, dan semua implementasi antarmuka proxy-stub eksternal lainnya, harus tercantum di comInterfaceExternalProxyStub. Elemen comInterfaceExternalProxyStub memiliki atribut yang ditunjukkan dalam tabel berikut.
Atribut Deskripsi iid IID antarmuka tempat proksi dideklarasikan. Wajib diisi. Nilai harus dalam bentuk: "{iid}". baseInterface IID antarmuka dari mana yang dijelaskan oleh atribut iid diturunkan. Atribut ini opsional. Nilai harus dalam bentuk: "{iid}". numMethods Jumlah metode yang diterapkan oleh antarmuka. Atribut ini opsional. Nilai harus dalam bentuk: "n". nama Nama antarmuka seperti yang akan muncul dalam kode. Misalnya, "IViewObject". Ini seharusnya bukan string deskriptif. Atribut ini opsional. Nilai harus dalam bentuk: "name". tlbid Pustaka jenis yang berisi deskripsi antarmuka yang ditentukan oleh atribut iid . Atribut ini opsional. Nilai harus dalam bentuk: "{tlbid}" . proxyStubClsid32 Memetakan IID ke CLSID dalam DLL proxy 32-bit. Contoh berikut menunjukkan elemen comInterfaceExternalProxyStub .
<comInterfaceExternalProxyStub name="IAxWinAmbientDispatch" iid="{B6EA2051-048A-11D1-82B9-00C04FB9942E}" numMethods="35" baseInterface="{00000000-0000-0000-C000-000000000046}"/>
-
comInterfaceProxyStub
-
Subelemen elemen file . Pilihan.
Jika file dalam assembly mengimplementasikan stub proksi, tag file yang sesuai harus menyertakan subelemen comInterfaceProxyStub yang memiliki atribut yang identik dengan elemen comInterfaceProxyStub . Marshaling antarmuka antara proses dan utas mungkin tidak berfungsi seperti yang diharapkan jika Anda menghilangkan beberapa dependensi comInterfaceProxyStub untuk komponen Anda.
Elemen comInterfaceProxyStub memiliki atribut berikut.
Atribut Deskripsi iid Tje. IID antarmuka yang proksinya sedang dideklarasikan. Wajib diisi. Nilai harus dalam bentuk: "{iid}". nama Nama antarmuka seperti yang akan muncul dalam kode. Misalnya, "IViewObject". Ini seharusnya bukan string deskriptif. Atribut ini opsional. Nilai harus dalam bentuk: "name". tlbid Pustaka jenis yang berisi deskripsi antarmuka yang ditentukan oleh atribut iid . Atribut ini opsional. Nilai harus dalam bentuk: "{tlbid}". baseInterface IID antarmuka dari mana yang dijelaskan oleh atribut iid diturunkan. Atribut ini opsional. Nilai harus dalam bentuk: "{iid}". numMethods Jumlah metode yang diterapkan oleh antarmuka. Atribut ini opsional. Nilai harus dalam bentuk: "n". proxyStubClsid32 Memetakan IID ke CLSID dalam DLL proxy 32-bit. threadingModel Model utas yang digunakan oleh kelas COM dalam proses. Jika properti ini null, maka tidak ada model utas yang digunakan. Komponen dibuat di utas utama klien dan panggilan dari utas lain dirangkai ke utas ini. Pilihan. Nilai yang valid adalah: "Apartemen", "Gratis", "Keduanya", dan "Netral". -
windowclass
-
Nama kelas windows yang akan diberi versi. Elemen windowclass memiliki atribut berikut.
Atribut Deskripsi Berversi Atribut ini mengontrol apakah nama kelas jendela internal yang digunakan dalam pendaftaran berisi versi rakitan yang berisi kelas jendela atau tidak. Nilai atribut ini dapat berupa "ya" atau "tidak". Defaultnya adalah "ya". Nilai "tidak" hanya boleh digunakan jika kelas jendela yang sama didefinisikan oleh komponen berdampingan dan komponen non-berdampingan yang setara dan Anda ingin memperlakukannya sebagai kelas jendela yang sama. Perhatikan bahwa aturan biasa tentang pendaftaran kelas jendela hanya berlaku komponen pertama yang mendaftarkan kelas jendela akan dapat mendaftarkannya karena tidak diberi versi. Contoh berikut menunjukkan elemen windowclass yang disertakan dalam elemen file .
<file name="comctl32.dll"> <windowClass versioned="no">ToolbarWindow32</windowClass> </file>
Contoh
Berikut ini adalah contoh manifes perakitan.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<assemblyIdentity type="win32" name="Microsoft.Tools.SampleAssembly" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="0000000000000000"/>
<file name="sampleu.dll" hash="3eab067f82504bf271ed38112a4ccdf46094eb5a" hashalg="SHA1">
<comClass description="Font Property Page" clsid="{0BE35200-8F91-11CE-9DE3-00AA004BB851}"/>
<comClass description="Color Property Page" clsid="{0BE35201-8F91-11CE-9DE3-00AA004BB851}"/>
<comClass description="Picture Property Page" clsid="{0BE35202-8F91-11CE-9DE3-00AA004BB851}"/>
</file>
<file name="bar.dll" hash="ac72753e5bb20446d88a48c8f0aaae769a962338" hashalg="SHA1"/>
<file name="foo.dll" hash="a7312a1f6cfb46433001e0540458de60adcd5ec5" hashalg="SHA1">
<comClass description="Registrar Class" clsid="{44EC053A-400F-11D0-9DCD-00A0C90391D3}" progid="ATL.Registrar"/>
<comInterfaceProxyStub iid="{B6EA2051-048A-11D1-82B9-00C04FB9942E}" name=" IAxWinAmbientDispatch " tlbid="{34EC053A-400F-11D0-9DCD-00A0C90391D3}"/>
<typelib tlbid="{44EC0535-400F-11D0-9DCD-00A0C90391D3}" version="1.0" helpdir=""/>
</file>
<file name="sampledll.dll" hash="ba62960ceb15073d2598379307aad84f3a73dfcb" hashalg="SHA1"/>
<windowClass>ToolbarWindow32</windowClass>
<windowClass>ComboBoxEx32</windowClass>
<windowClass>sample_trackbar32</windowClass>
<windowClass>sample_updown32</windowClass>
</assembly>