7

之前,我去我也去通過這個 InternalsVisibleTo attribute ain’t workin'!InternalsVisibleTo屬性不工作

因此標題

好了,所以我有使用類似下面的我的項目的工作版本。

[assembly: InternalsVisibleTo("Stuff.Test.Support, PublicKey="0024000004800000940000000302000000240000525341310004000001000100d158cd56401c3d90b52ca1a5f273d608c3ce12aaa21385b0f4ad7dc1b747e45ee1f1771c104c52cb4da1b587ae38b6d36fa1d8e8f14003c42f700bc62ef2ec04b231c5d930e4bc3691aa1ef7b6713926316d4be1165ede086e94190b44edd4ad0d024230ae6eb9deb728b00d71d1d468b20a9bb78f242bd6c41e640c2e5c0cd5")] 

在Properties/AssemblyInfo.cs文件中包含我想要訪問的內部東西。 在檢查它在工作之前。但在Team Foundation上合併後,IDK WTF是錯誤的,但它像我的AssemblyInfo.cs沒有看到該屬性,但我證實文件中沒有任何更改,但仍然出現"innaccessable due to its protection level."錯誤。 (伽馬輻射?黑子?小邪惡的侏儒是訓練蟲子tweek工作代碼爲不工作密碼笑)

我已經嘗試過使用反射添加單個實例...

Assembly Core = Assembly.LoadFile("C:\Stuff.Internal.Core\bin\Debug\Stuff.Internal.Core.dll"); 

Object AssmWithIdentifier = Core.CreateInstance("AssemblyWithIdentifer", false); 

當我嘗試這我得到'Stuff.Internal.AssemblyWithIdentifer' is inaccessible due to protection level.

否則,如果我註釋掉任何與內部的東西有關,我的項目編譯就好了。

我雙重檢查我的「公鑰」與紅蓋茨反射

和我一直在使用privateObjects到可能的接入方式這種方式但無論我如何努力,我不能什麼實例化內部也試過。

我也嘗試過簡單地添加一個新的項目,編譯它的任何引用和是的,實際上工作,但之後,我試圖創建一個新的項目,並添加「Stuff.Test.Support」項目中的所有東西,等,並添加到AssemblyInfo.cs中,在中,我希望訪問項目,但是,一旦我嘗試編譯我得到同樣的錯誤"innaccessable due to its protection level."

編輯: 我沒忘記提到我使用全局管理程序集的sharedAssembly.cs,並具有幾個屬性,這些屬性的設置方式與本示例assembly: InternalsVisibleTo屬性在本問題開始時顯示的屬性類似。 我也使用強命名程序集,如果這是我的例子沒有突出的東西。

+2

嘿,也許你應該從該項目中刪除任何工作流定義!試試看。 – Will 2010-08-18 15:41:50

+0

工作的OMG。也許你應該把它作爲答案,這樣你才能真正獲得一些信譽。 – Terrance 2010-08-18 15:58:12

回答

4

原來工作流定義導致了差異。仍然試圖找出爲什麼.....
那麼,如果任何人都可以提供一個鏈接來解釋爲什麼會從我這裏得到+1。

+2

你做了什麼來解決它? – 2010-09-16 12:33:24

+0

我刪除了項目中的所有工作流程定義。不是最好的答案,但它現在起作用。目前微軟還有一個錯誤報告。鏈接是https://connect.microsoft.com/VisualStudio/feedback/details/588710/internalsvisibleto-fails-when-mixed-with-wf4-0-activity-definitions-and-custom-activities – Terrance 2010-09-16 14:34:45

+0

工作流程如何變成定義? – RouR 2012-04-19 11:41:51

2

1)如果InternalsVisibleTo設置正確,你不需要反射來從'朋友'實例化它們,它可以直接使用ctor's等。我會走這條路線,以便VS IDE可以更快地反饋內部是否對目標項目真正可見。

2)根據你以後得到的錯誤信息,你有沒有試過InternalsVisibleTo(「Stuff.Test.Support」)?

+0

1)我已經使用反射作爲替代使用InternalsVisibleTo因爲它不是目前正在嘗試。我現在正在思考反思,看看有沒有我錯過的東西。 2)我目前使用強名稱的程序集,所以我得到錯誤 朋友程序集引用'Stuff.Tests.Support'無效。強名稱簽名的程序集必須在其InternalsVisibleTo聲明中指定一個公鑰。 \t 對不起,我剛剛改裝成我的問題披露關於我的設置更多的信息。所以也許這可以幫助你更好。 – Terrance 2010-08-17 16:41:08