Saya memiliki 2 proyek dalam solusi saya:
- Majelis (Perpustakaan Dasar)
- Majelis Uji (NUnit)
Saya telah menyatakan perakitan tes sebagai perakitan teman di proyek pertama:
[assembly: InternalsVisibleTo ("Company.Product.Tests")]
Semuanya berfungsi dengan baik sampai saya menyadari bahwa saya lupa menyiapkan solusi untuk menandatangani majelis saya. Jadi buat file snk dan atur proyek studio visual untuk menandatangani perakitan pertama (Perpustakaan Dasar). Sekarang ketika saya mengkompilasi proyek pertama, saya mendapatkan kesalahan berikut:
Referensi perakitan teman 'Company.Product.Tests' tidak valid. Rakitan bertanda tangan nama kuat harus menentukan kunci publik dalam deklarasi InternalsVisibleTo mereka.
Saya mencoba mengekstrak kunci publik dari file snk saya menggunakan utilitas sn tetapi menghasilkan file biner berkabel yang saya tidak yakin cara menggunakannya. Bagaimana cara mengatasi masalah tersebut?
AssemblyInfo.cs
. Sejak itu disimpulkan nama yang tepat untuk digunakan adalah 'nama perakitan' dari dialog Properti / Aplikasi proyek (yang berbeda lagi dari nama proyek di penjelajah solusi Visual Studio).Anda bisa langsung mendapatkan publicKey dari assembly yang Anda minati, tanpa sihir dengan sn.exe
sumber
Saya rasa Anda perlu memasukkan nama yang kuat, yang akan menjadi seperti "Company.Product.Tests, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 17135d9fcba0119f". Saya menganggap Company.Product.Tests adalah nama perakitan Anda dan 17135d9fcba0119f adalah kunci publik.
Cara lain untuk menyelesaikan masalah ini adalah dengan tidak menggunakan rakitan terpisah. Saya biasanya meletakkan kode sumber dan kode pengujian dalam perakitan yang sama. Saya tidak tahu apakah Anda memiliki perhatian khusus sehingga Anda harus memisahkan mereka.
sumber