2011-08-12 55 views
15

我需要'朋友'一個dll庫,我沒有作者。如何獲得裝配的強名稱?

我可以在屬性中看到它具有強名稱,但是如何才能找出強名稱是什麼,所以我可以在System.Runtime.CompilerServices.InternalsVisibleTo中使用它?

回答

14

爲了得到一個強命名程序集的公共密鑰,使用sn工具:

sn -Tp assembly.dll 

這將顯示你的公鑰您需要輸入InternalsVisibleTo屬性。如果您打開Visual Studio命令提示符,sn.exe工具將已經在路徑中。

但是,我會質疑你想要實現的。如果你有一個沒有編寫的編譯程序集,將InternalsVisibleTo屬性添加到你的代碼將允許它訪問你的代碼的內部,但是如果沒有朋友訪問權限,它就不會被編譯。如果你正在嘗試訪問其他程序集的內部,那麼InternalsVisibleTo屬性將需要添加到其他程序集 - 你不能沒有重新編譯它的東西..

+0

我試圖給朋友的程序集使用反射我的代碼,當反射代碼發現它運行在一個不應該訪問的內部類時,它會中斷。這些錯誤在運行時不是編譯時間。 –

+0

不錯,但是。 –

2

您必須指定完全合格的名稱和組裝的AssemblyInfo.cs文件中的公鑰標記你「需要的朋友」:

[assembly: InternalsVisibleTo("FullAssemblyName, PublicKey=....",)] 

如果你有Reflector.NET或在手反彙編你可以用它看到這個信息