【问题标题】:InternalsVisibleTo doesn't work with all assemblies. Some works, some not worksInternalsVisibleTo 不适用于所有程序集。有些有效,有些无效
【发布时间】:2012-01-15 18:41:50
【问题描述】:

我有一个通用 DLL,它有一些内部方法供内部使用。除此之外,我还有 3 个其他项目 WebServices、UnitTests 和 PATs

在 Common 项目的 AssemblyInfo.cs 中,我添加了以下几行:

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

这些内部方法与 UnitTests 和 PATs 但 WebService 完美配合。当我在 WebService 项目中编写代码时,我可以在 IntelliSense 框中看到这些内部方法,这很奇怪。我写代码时没有错误提示,但是当我构建项目时,我收到了这个错误消息

“Common”不包含“内部方法名称”的定义

当时,我认为程序集名称在某种程度上是错误的。我试图确定它确实是错误的:

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

然后在WebService项目中,在I use Common internal methods without compile with this message的那一行立即变成红色:

无法在此处访问内部方法“内部方法名称

所以我认为我的程序集名称是正确的,但我仍然不知道为什么我不能在我的 WebServices 项目中使用内部方法。

【问题讨论】:

  • 我刚刚找到了一些线索。在我的 WebService 项目中,我使用了 Workflow,当我删除所有 Workflow 时,构建成功。我将工作流重新添加到我的项目中,出现上述错误。有没有人知道使用 Workflow 的组装的友好组装有什么问题?

标签: c# methods internal internalsvisibleto


【解决方案1】:

您在此处给出的第一条错误消息表明您使用了错误的命名空间:

“Common”不包含“内部方法名称”的定义

表示你要使用的方法不存在。它很可能在其他命名空间中 - 特别是如果您对类使用扩展方法。

您可能已经注意到,在给 InternalsVisibleTo 表达式输入错误名称之后,您遇到的第二个错误是不同的:

此处无法访问内部方法“内部方法名称”

只有第二个错误与将内部结构暴露给其他 dll 有关。

Visual Studio 也有可能发疯了,重新启动/重建就足够了。

【讨论】:

    猜你喜欢
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    相关资源
    最近更新 更多