Odpowiedzi:
Pozwól mi najpierw wymienić zalety silnego nazwania twojego zespołu:
Silne nazewnictwo zestawu umożliwia dołączenie zestawu do globalnej pamięci podręcznej zestawów (GAC). W ten sposób umożliwia udostępnianie go w wielu aplikacjach.
Silne nazewnictwo gwarantuje unikatową nazwę dla tego zestawu. Dlatego nikt inny nie może używać tej samej nazwy zestawu.
Silna nazwa chroni rodowód wersji zestawu. Silna nazwa może zapewnić, że nikt nie będzie w stanie utworzyć kolejnej wersji zestawu. Użytkownicy aplikacji mają pewność, że wersja zestawu, którą ładują, pochodzi od tego samego wydawcy, który utworzył wersję, na której została zbudowana aplikacja.
Więcej informacji na temat silnego nazewnictwa firmy Microsoft można znaleźć w artykule Zestawy o silnych nazwach ( MSDN ).
Czego nie można zrobić przy normalnym montażu?
Ponieważ wszystkie dyskusje, które rozpoczęły się wraz z pojawieniem się Nugeta, sugerowały całkowite pozbycie się silnie nazwanych zestawów, moja firma próbowała tego i natrafiła na znaczącą zmianę zachowania, jeśli chodzi o ustawienia aplikacji:
Jeśli używasz automatycznych ustawień aplikacji lub aplikacji z zakresem użytkownika dostarczonych przez VisualStudio (dziedziczenie System.Configuration.ApplicationSettingsBase), wówczas silny plik EXE utworzy dokładnie 1 katalog w% LOCALAPPDATA% o nazwie na przykład „YourApplication.exe_StrongName_kjsdfzsuzdfiuzgpoisdiufzsdouif” usytuowany.
Ale bez silnej nazwy lokalizacja (= ścieżka) EXE zostanie użyta do utworzenia wartości skrótu, która już różni się między wersjami DEBUG i RELEASE, tworząc wiele katalogów wewnątrz% LOCALAPPDATA% nazwanych jak „YourApplication.exe_Url_dfg8778d6fs7g6d7f8g69sdf”. To sprawia, że nie można go używać w przypadku wdrożeń ClickOnce, w których katalog instalacyjny zmienia się przy każdej aktualizacji.
Dodam, że bez silnej nazwy nie można używać przekierowań wiążących w plikach konfiguracyjnych.
To nie zadziała:
<dependentAssembly>
<assemblyIdentity name="MyAssembly.MyComponent" publicKeyToken="null" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
Musisz mieć token klucza publicznego
<dependentAssembly>
<assemblyIdentity name="MyAssembly.MyComponent" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
Oto przykład: chciałbym udzielić odpowiedzi kładąc większy nacisk na bezpieczeństwo . W przypadku, gdy tworzymy zestawy z kodem źródłowym, którego nie chcemy ponownie wykorzystać dla strony trzeciej, ale chcemy, aby był testowalny, możemy silnie podpisać zestaw i sprawić, by elementy wewnętrzne były widoczne tylko dla tych zestawów z ten sam podpis.