Szerelvénynevek

A szerelvény neve metaadatokban van tárolva, és jelentős hatással van a szerelvény hatókörére és egy alkalmazás általi használatára. Az erős nevű szerelvénynek teljes neve van, amely tartalmazza a szerelvény nevét, kultúráját, nyilvános kulcsát, verziószámát és opcionálisan a processzorarchitektúrát. FullName A tulajdonság használatával szerezze be a betöltött szerelvényekhez tartozó teljes nevet( más néven megjelenítési nevet).

A futtatókörnyezet a névadatok alapján keresi meg a szerelvényt, és megkülönbözteti az azonos nevű szerelvényektől. Egy erős myTypes nevű szerelvény neve például a következő teljes névvel rendelkezhet:

myTypes, Version=1.0.1234.0, Culture=en-US, PublicKeyToken=b77a5c561934e089c, ProcessorArchitecture=msil

Ebben a példában a teljes név azt jelzi, hogy a myTypes szerelvény erős névvel rendelkezik nyilvánoskulcs-jogkivonattal, rendelkezik Egyesült Államok angol nyelvű kulturális értékkel, és 1.0.1234.0-s verziószámmal rendelkezik. A processzorarchitektúra msilaz, ami azt jelenti, hogy az operációs rendszertől és a processzortól függően 32 bites kódra vagy 64 bites kódra lesz lefordítva.

Tipp.

Az ProcessorArchitecture információk lehetővé teszik a szerelvények processzorspecifikus verzióit. Létrehozhat olyan szerelvényverziókat, amelyek identitása csak a processzorarchitektúra szerint különbözik, például a 32 bites és a 64 bites processzorspecifikus verzióktól. Az erős nevekhez nincs szükség processzorarchitektúrára. További információ: AssemblyName.ProcessorArchitecture.

A szerelvény típusait kérő kódnak teljes körűen minősített szerelvénynevet kell használnia. Ezt teljes mértékben minősített kötésnek nevezzük. A részleges kötés, amely csak egy szerelvénynevet határoz meg, nem engedélyezett a szerelvényekre való hivatkozáskor .NET-keretrendszer.

Az .NET-keretrendszer alkotó szerelvényekre mutató összes szerelvény-hivatkozásnak tartalmaznia kell a szerelvény teljes nevét is. Az 1.0-s verzió System.Data .NET-keretrendszer szerelvényére való hivatkozás például a következőket tartalmazza:

System.data, version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

A verzió az .NET-keretrendszer 1.0-s verzióval szállított összes .NET-keretrendszer szerelvények verziószámának felel meg. .NET-keretrendszer szerelvények esetében a kulturális érték mindig semleges, a nyilvános kulcs pedig ugyanaz, mint a fenti példában látható.

Ha például szerelvényhivatkozást szeretne hozzáadni egy konfigurációs fájlhoz egy nyomkövetési figyelő beállításához, a rendszer .NET-keretrendszer szerelvény teljes neve szerepelhet:

<add name="myListener" type="System.Diagnostics.TextWriterTraceListener, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\myListener.log" />

Feljegyzés

A futtatókörnyezet a szerelvénynevek kis- és nagybetűket érzéketlennek tekinti, amikor egy szerelvényhez kötődik, de megőrzi a szerelvénynévben használt bármilyen esetet. A Windows SDK számos eszköze megkülönbözteti a szerelvényneveket. A legjobb eredmény érdekében úgy kezelheti a szerelvényneveket, mintha a kis- és nagybetűk megkülönböztették volna őket.

Alkalmazásösszetevők elnevezése

A futtatókörnyezet nem veszi figyelembe a fájlnevet egy szerelvény identitásának meghatározásakor. A szerelvénynévből, verzióból, kultúrából és erős névből álló szerelvény-identitásnak egyértelműnek kell lennie a futtatókörnyezet számára.

Ha például myAssembly.exe nevű szerelvénye myAssembly.dll nevű szerelvényre hivatkozik, a kötés helyesen történik, ha végrehajtja myAssembly.exe. Ha azonban egy másik alkalmazás myAssembly.exe hajt végre a metódussalAppDomain.ExecuteAssembly, a futtatókörnyezet megállapítja, hogy myAssembly az már be van töltve, amikor myAssembly.exe kötést kér.myAssembly Ebben az esetben a myAssembly.dll soha nem töltődik be. Mivel a myAssembly.exe nem tartalmazza a kért típust, ez TypeLoadException történik.

A probléma elkerülése érdekében győződjön meg arról, hogy az alkalmazást alkotó szerelvények nem rendelkeznek ugyanazzal a szerelvénynévvel, vagy különböző könyvtárakban azonos nevű szerelvényeket helyeznek el.

Feljegyzés

Ha egy erős nevű szerelvényt helyez el a globális szerelvény-gyorsítótárban, .NET-keretrendszer a szerelvény fájlnevének meg kell egyeznie a szerelvény nevével, a fájlnévkiterjesztést nem beleértve, például .exe vagy .dll. Ha például egy szerelvény fájlneve myAssembly.dll, a szerelvény nevének kell lennie myAssembly. A csak a gyökéralkalmazás könyvtárában üzembe helyezett privát szerelvényeknek a fájl nevétől eltérő szerelvénynévvel kell rendelkezniük.

Lásd még