2011-12-08 47 views
3

我有一個常見的DLL,它有一些內部使用的內部方法。除了我還有其他3周項目的WebServices,單元測試和PATSInternalsVisibleTo不適用於所有組件。有些作品,有些不起作用

在公共項目的AssemblyInfo.cs中,我添加了這些行:

[assembly: InternalsVisibleTo("WebServices, PublicKey=00240...b59a0")] 
[assembly: InternalsVisibleTo("UnitTests, PublicKey=00240...dcf98")] 
[assembly: InternalsVisibleTo("PATs, PublicKey=00240...e65cf")] 

這些內部工作方法與完善單元測試代碼和PATS但WebService的。當我在WebService項目中編寫代碼時,我可以在IntelliSense框中看到這些內部方法,這很奇怪。沒有錯誤警報時,我寫的代碼,但是當我生成項目,我得到這個錯誤消息

「通用」不包含「內部方法名

在定義那一次,我認爲程序集名稱在某種程度上是錯誤的。我儘量讓這真的錯了肯定的:

[assembly: InternalsVisibleTo("WebSer, PublicKey=00240...b59a0")] 

然後在WebService的項目,則會變成紅色,立即在該行我使用常見的內部方法,而與此消息編譯:

無法

訪問內部方法「內部方法名」這裏

所以我覺得我的程序集名稱是正確的,但我仍然不知道爲什麼我不能在我的Web服務項目中使用的內部方法。

+0

我剛剛發現了一些線索。在我的WebService項目中,我使用了Workflow,當我刪除所有工作流時,構建成功。我重新將Workflow添加到我的項目中,發生上述錯誤。有沒有人知道使用工作流的裝配友好裝配有什麼問題? –

回答

0

你給這裏的第一個錯誤消息表明,你正在使用錯誤的命名空間:

「通用」不包含「內部方法名稱」的定義

這意味着,該方法你想用它不在那裏。它最有可能在其他一些命名空間中 - 特別是如果您將擴展方法用於類。

正如你可能已經注意到了,你已經得到了第二個錯誤,把錯誤的名稱來表達InternalsVisibleTo後,不同的是:

不能訪問內部方法的內部方法名「這裏

只有第二個錯誤與將內部結構暴露給其他dll有關。

Visual Studio也可能瘋了,重新啓動/重建就足夠了。

相關問題