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ű könyvtárnak teljesen minősített neve van, amely tartalmazza a könyvtár nevét, kultúráját, nyilvános kulcsát, verziószámát, és opcionálisan a processzorarchitektúrát. A FullName tulajdonság használatával szerezze be a betöltött assembly teljes nevét (más néven megjelenítési nevet).

A futtatókörnyezet a névinformáció alapján keresi meg az összeállítást, és megkülönbözteti a többi azonos nevű összeállítástól. Egy erős nevű összetevő, például a myTypes, a következő teljes minősített neve lehet:

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 összeállítás erős névvel rendelkezik, nyilvános kulcs jogkivonattal, az amerikai angol nyelvi kultúrához tartozik, és az 1.0.1234.0 verziószámmal rendelkezik. A processzor architektúrája msil az, ami azt jelenti, hogy just-in-time (JIT) módon lesz lefordítva 32 bites kódra vagy 64 bites kódra az operációs rendszertől és a processzortól függően.

Jótanács

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óért lásd AssemblyName.ProcessorArchitecture.

A szerelvény típusait kérő kódnak teljes körűen minősített szerelvénynevet kell használnia. Ezt teljesen 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 .NET-keretrendszerben lévő szerelvényekre való hivatkozáskor.

A .NET-keretrendszert alkotó szerelvényekre mutató összes szerelvényhivatkozásnak tartalmaznia kell a szerelvény teljes nevét is. 1. Például a System.Data .NET Framework 1.0-s verziójának assemblyjára való hivatkozás tartalmazza:

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

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

Ha például egy 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ének teljes nevét is tartalmaznia kell:

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

Megjegyzés:

A futtatókörnyezet nem érzékeny a kis- és nagybetűk közötti különbségre, amikor egy assembly-hez kapcsolódik, de megőrzi az assembly névben található eredeti esethasználatot. A Windows SDK számos eszköze megkülönbözteti a kis- és nagybetűket a szerelvénynevekben. A legjobb eredmény érdekében kezelje az összeszerelési neveket úgy, mintha a kis- és nagybetűk különbsége számítana.

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.

Például, ha van egy myAssembly.exenevű szerelvénye, amely myAssembly.dllnevű szerelvényre hivatkozik, a kötés megfelelően történik, ha végrehajtja myAssembly.exe. Ha azonban egy másik alkalmazás myAssembly.exe hajt végre a metódussal AppDomain.ExecuteAssembly, akkor a futtatókörnyezet megállapítja, hogy myAssembly már be van töltve, amikor myAssembly.exe kéri a kötést myAssembly. Ebben az esetben myAssembly.dll soha nem töltődik be. Mivel myAssembly.exe nem tartalmazza a kért típust, TypeLoadException következik be.

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.

Megjegyzés:

A .NET-keretrendszerben, ha egy erős nevű assemblyt helyez el a globális assembly-gyorsítótárban, az assembly fájlnevének meg kell egyeznie az assembly nevével, a fájlnévkiterjesztés nélkül, 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