沒有看到你的具體類,很難做到準確,但要保證以下幾點:
- 你的類或者是
internal
或public
- 你的方法
internal
- 的
InternalsVisibleTo
屬性包含全測試項目的名稱空間。
也就是說,如果你的測試項目MyProject.UnitTests
,那麼你需要有一個在你的InternalsVisibleTo
,如:
[assembly: System.Runtime.CompilerServices.InternalsVisibleToAttribute("MyProject.UnitTests")]
我從來沒有使用InternalsVisibleTo
的公鑰部分,所以我不能評論,但你可以嘗試刪除它。通常沒有它的工作對我來說。
[assembly: System.Runtime.CompilerServices.InternalsVisibleToAttribute("MyProject.UnitTests")]
公鑰值
假設這些無一不精,它仍然沒有工作,我猜這件事情跟你正在進入公鑰值。在快速網頁搜索中,看起來您並沒有輸入名稱的密鑰,而是輸入了密碼的值。爲了得到這個結果,請按照this指示來獲得該值。我將在這裏引用後人的指示。
InternalsVisibleTo Attribute可用於允許其他程序集(例如您的單元測試程序集)查看程序集的內部成員。我更喜歡這種方法,將單元測試放入我的主要程序集或使用自動生成訪問器的VSTS功能到我的私人成員。 (當你去重構一個項目時,這些真的很有趣......)
現在你會發現關於這個的大部分信息都是指早期的beta版本。用於獲取PublicKeyToken的屬性現在需要一個PublicKey。
要使用InternalsVisibleTo屬性:
- 運行SN.EXE -p MyStrongNameKey.snk MyStrongNameKey.PublicKey
這將提取到的公鑰與.PublicKey擴展名的文件。 (我討厭使用.pub擴展名,因爲它被視爲Microsoft Publisher文件...)
- run sn.exe -tp MyStrongNameKey。公鑰
這將顯示您的公鑰。複製此密鑰。
創建一個屬性爲這樣:即公共:[InternalsVisibleTo( 「MyProject.UnitTests,公鑰=糊狀YOUR-PUBLIC-KEY-HERE」)組件]
注
顯示的鍵是5行左右。從公鑰刪除換行符並將其粘貼到屬性中。
你完成了!程序集MyProject.UnitTests現在可以看到程序集的內部成員。
想要分享一些代碼? –
你確定使用的程序集名稱和私鑰是否正確? – PMF
我只有一個內部類與幾個私人方法,當我試圖改變內部公共測試工作。 – bearbearbear