2012-07-31 58 views
2

我在創建單元測試時遇到問題。我有2個項目。一個是「真正的」項目,另一個是單元測試項目。在我點擊實際項目中的方法後,選擇「創建單元測試」。然後我得到了測試項目中單元測試的代碼。帶簽名程序集的c#單元測試

現在,編譯後,我得到以下錯誤消息:

朋友集引用「的AssemblyName」是無效的。強名稱簽名的程序集必須在其InternalsVisibleTo聲明中指定一個公鑰。

然後我在真實項目的AssemblyInfo.cs的InternalsVisibleTo-Declaration中添加了一個公鑰。但是現在我得到了真實項目中每個類的編譯錯誤,它是內部密封的。該消息是:

「CLASSNAME」是無法訪問由於其保護級別

我能做些什麼來解決這個問題?有任何想法嗎?

+0

您的測試在相同的命名空間/程序集? – PeskyGnat 2012-07-31 12:45:24

+0

不可以。命名空間不同。 – Tomtom 2012-07-31 12:46:34

+0

「內部」說明符表示訪問僅限於相同的程序集,因此如果您的測試在不同的程序集中,則可能會看到此錯誤 – PeskyGnat 2012-07-31 12:48:19

回答

1

把程序集的名稱,然後一個逗號和您的公鑰。請記住刪除您的公鑰中的任何換行符等,當您將其粘貼到您的AssemblyInfo文件

[assembly: InternalsVisibleTo("AssemblyName, PublicKey=xxx")] 
0

是的,我添加了公鑰標記。它看起來像下面這樣:

[assembly: InternalsVisibleTo("NAMESPACE, PublicKey=00240000048000009 40000000602000000240000525341310004000001000100354f0966de4a992baa1ed0f2 faf643f86fd2c74aee8b9dc6c0321f9d658166658ec154aaed70ab4b92a21a3c1e7e53 200232043c0d0b791496fd0201d21f18433ee9507022f2a72829d1dd32b106f86c68e 620d2a39f02f3a8b82aa23196ef7f7f4880020dd340dd2dfecdd1b3051b1e659c9e18c 8e21cc90bc33de306712b86")] 
+0

作者:「NAMESPACE」你是否確實指名稱?如果不是,那可能是你的問題。 – Iridium 2012-07-31 13:06:23

+0

對不起。我的意思是AssemblyName不是InternalsVisibleTo中的名稱空間 – Tomtom 2012-07-31 13:32:52