2011-12-08 25 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也可能疯了,重新启动/重建就足够了。

相关问题