我需要'朋友'一個dll庫,我沒有作者。如何獲得裝配的強名稱?
我可以在屬性中看到它具有強名稱,但是如何才能找出強名稱是什麼,所以我可以在System.Runtime.CompilerServices.InternalsVisibleTo
中使用它?
我需要'朋友'一個dll庫,我沒有作者。如何獲得裝配的強名稱?
我可以在屬性中看到它具有強名稱,但是如何才能找出強名稱是什麼,所以我可以在System.Runtime.CompilerServices.InternalsVisibleTo
中使用它?
爲了得到一個強命名程序集的公共密鑰,使用sn工具:
sn -Tp assembly.dll
這將顯示你的公鑰您需要輸入InternalsVisibleTo
屬性。如果您打開Visual Studio命令提示符,sn.exe工具將已經在路徑中。
但是,我會質疑你想要實現的。如果你有一個沒有編寫的編譯程序集,將InternalsVisibleTo
屬性添加到你的代碼將允許它訪問你的代碼的內部,但是如果沒有朋友訪問權限,它就不會被編譯。如果你正在嘗試訪問其他程序集的內部,那麼InternalsVisibleTo
屬性將需要添加到其他程序集 - 你不能沒有重新編譯它的東西..
您必須指定完全合格的名稱和組裝的AssemblyInfo.cs文件中的公鑰標記你「需要的朋友」:
[assembly: InternalsVisibleTo("FullAssemblyName, PublicKey=....",)]
如果你有Reflector.NET或在手反彙編你可以用它看到這個信息
我試圖給朋友的程序集使用反射我的代碼,當反射代碼發現它運行在一個不應該訪問的內部類時,它會中斷。這些錯誤在運行時不是編譯時間。 –
不錯,但是。 –