W swoim rozwiązaniu mam 2 projekty:
- Zespół (biblioteka podstawowa)
- Zespół testowy (NUnit)
Zadeklarowałem montaż testowy jako zespół przyjaciół w pierwszym projekcie:
[assembly: InternalsVisibleTo ("Company.Product.Tests")]
Wszystko działało dobrze, aż zdałem sobie sprawę, że zapomniałem skonfigurować rozwiązanie do podpisywania moich zestawów. Utworzono więc plik snk i skonfigurowano projekt Visual Studio, aby podpisać pierwszy zestaw (biblioteka podstawowa). Teraz, kiedy kompiluję pierwszy projekt, pojawia się następujący błąd:
Odwołanie do zestawu znajomego „Company.Product.Tests” jest nieprawidłowe. Podpisane zestawy o silnej nazwie muszą określać klucz publiczny w swoich deklaracjach InternalsVisibleTo.
Próbowałem wyodrębnić klucz publiczny z mojego pliku snk za pomocą narzędzia sn, ale generuje on przewodowy plik binarny, którego nie jestem pewien, jak go użyć. Jak mogę rozwiązać problem?
AssemblyInfo.cs
. Od tamtej pory właściwą nazwą do użycia jest `` nazwa zestawu '' z okna dialogowego Właściwości / Aplikacja projektu (która ponownie różni się od nazwy projektu w eksploratorze rozwiązań programu Visual Studio).Możesz bezpośrednio pobrać publicKey z zestawu, który Cię interesuje, bez magii za pomocą sn.exe
źródło
Myślę, że musisz wpisać silną nazwę, która brzmiałaby jak „Firma.Product.Tests, Wersja = 1.0.0.0, Kultura = neutralna, PublicKeyToken = 17135d9fcba0119f”. Zakładam, że Company.Product.Tests to nazwa twojego zestawu, a 17135d9fcba0119f to klucz publiczny.
Innym sposobem rozwiązania tego problemu byłoby nieużywanie oddzielnych zestawów. Zwykle umieszczam kod źródłowy i kod testowy w tym samym zestawie. Nie wiem, czy masz jakieś szczególne obawy, że musisz je rozdzielić.
źródło