Nazwy zestawów
Nazwa zestawu jest przechowywana w metadanych i ma znaczący wpływ na zakres zestawu i jego użycie przez aplikację. Zestaw o silnej nazwie ma w pełni kwalifikowaną nazwę, która zawiera nazwę zestawu, kulturę, klucz publiczny, numer wersji i, opcjonalnie, architekturę procesora. FullName Użyj właściwości , aby uzyskać w pełni kwalifikowaną nazwę, często nazywaną nazwą wyświetlaną, dla załadowanych zestawów.
Środowisko uruchomieniowe używa informacji o nazwie, aby zlokalizować zestaw i odróżnić go od innych zestawów o tej samej nazwie. Na przykład zestaw myTypes
o silnej nazwie może mieć następującą w pełni kwalifikowaną nazwę:
myTypes, Version=1.0.1234.0, Culture=en-US, PublicKeyToken=b77a5c561934e089c, ProcessorArchitecture=msil
W tym przykładzie w pełni kwalifikowana nazwa wskazuje, że myTypes
zestaw ma silną nazwę z tokenem klucza publicznego, ma wartość kultury dla Stany Zjednoczone języka angielskiego i ma numer wersji 1.0.1234.0. Jego architektura procesora to msil
, co oznacza, że będzie kompilowany w trybie just in time (JIT) do 32-bitowego kodu lub 64-bitowego kodu w zależności od systemu operacyjnego i procesora.
Napiwek
Informacje ProcessorArchitecture
umożliwiają korzystanie z wersji zestawów specyficznych dla procesora. Można tworzyć wersje zestawu, których tożsamość różni się tylko w zależności od architektury procesora, na przykład 32-bitowej i 64-bitowej wersji procesora. Architektura procesora nie jest wymagana dla silnych nazw. Aby uzyskać więcej informacji, zobacz AssemblyName.ProcessorArchitecture.
Kod, który żąda typów w zestawie, musi używać w pełni kwalifikowanej nazwy zestawu. Jest to nazywane w pełni kwalifikowanym powiązaniem. Powiązanie częściowe, które określa tylko nazwę zestawu, nie jest dozwolone podczas odwoływania się do zestawów w programie .NET Framework.
Wszystkie odwołania do zestawów tworzących program .NET Framework muszą również zawierać w pełni kwalifikowaną nazwę zestawu. Na przykład odwołanie do zestawu System.Data .NET Framework w wersji 1.0 obejmuje:
System.data, version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Wersja odpowiada numerowi wersji wszystkich zestawów .NET Framework dostarczanych z programem .NET Framework w wersji 1.0. W przypadku zestawów programu .NET Framework wartość kultury jest zawsze neutralna, a klucz publiczny jest taki sam, jak pokazano w powyższym przykładzie.
Aby na przykład dodać odwołanie do zestawu w pliku konfiguracji w celu skonfigurowania odbiornika śledzenia, należy uwzględnić w pełni kwalifikowaną nazwę zestawu .NET Framework systemu:
<add name="myListener" type="System.Diagnostics.TextWriterTraceListener, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\myListener.log" />
Uwaga
Środowisko uruchomieniowe traktuje nazwy zestawów jako bez uwzględniania wielkości liter podczas tworzenia powiązania z zestawem, ale zachowuje wielkość liter w nazwie zestawu. Kilka narzędzi w zestawie Windows SDK obsługuje nazwy zestawów jako wielkość liter. Aby uzyskać najlepsze wyniki, zarządzaj nazwami zestawów tak, jakby były uwzględniane wielkość liter.
Nazwij składniki aplikacji
Środowisko uruchomieniowe nie uwzględnia nazwy pliku podczas określania tożsamości zestawu. Tożsamość zestawu, która składa się z nazwy zestawu, wersji, kultury i silnej nazwy, musi być jasna dla środowiska uruchomieniowego.
Jeśli na przykład masz zestaw o nazwie myAssembly.exe , który odwołuje się do zestawu o nazwie myAssembly.dll, powiązanie odbywa się poprawnie w przypadku wykonania myAssembly.exe. Jeśli jednak inna aplikacja wykonuje myAssembly.exe przy użyciu metody AppDomain.ExecuteAssembly, środowisko uruchomieniowe określi, że myAssembly
jest już załadowane, gdy myAssembly.exe żądania powiązania z myAssembly
. W tym przypadku myAssembly.dll nigdy nie są ładowane. Ponieważ myAssembly.exe nie zawiera żądanego typu, występuje TypeLoadException .
Aby uniknąć tego problemu, upewnij się, że zestawy tworzące aplikację nie mają tej samej nazwy zestawu lub umieszczają zestawy o tej samej nazwie w różnych katalogach.
Uwaga
Jeśli w programie .NET Framework umieścisz zestaw o silnej nazwie w globalnej pamięci podręcznej zestawów, nazwa pliku zestawu musi być zgodna z nazwą zestawu, a nie w tym rozszerzeniem nazwy pliku, takim jak .exe lub .dll. Jeśli na przykład nazwa pliku zestawu jest myAssembly.dll, nazwa zestawu musi mieć wartość myAssembly
. Zestawy prywatne wdrożone tylko w katalogu głównym aplikacji mogą mieć nazwę zestawu inną niż nazwa pliku.