【问题标题】:Visual Studio 2010 -- are you missing a using directive or an assembly reference?Visual Studio 2010 - 您是否缺少 using 指令或程序集引用?
【发布时间】:2010-12-22 18:04:47
【问题描述】:

当我在 Visual Studio 项目中添加对我的 dll 的引用时,我可以使用它,但是当我编译我的代码或尝试运行它时,我得到一个 你是否缺少 using 指令还是程序集引用?_错误。我能够确认我的命名空间有正确的 using 语句,并且我能够确认 dll 已正确加载。 任何人都知道我在这方面可能没有权利吗?

【问题讨论】:

  • 我敢打赌,除了那句话之外,这个错误还说明了其他内容。想完整地展示它吗?也许还有一些代码?心灵调试并不容易,你知道的。还有你用的是什么语言? C# 还是 VB.NET?
  • 你能告诉我们更多细节吗?相关行是您的 dll 中的 using 语句吗?
  • 我收到了同样的错误。我只是将该特定引用的 Copy Local 属性设置为 true,错误就消失了。试一试
  • @Martinho Fernandes,我不同意。这是在引用非客户端配置文件第 3 方 dll 时为 客户端配置文件 框架编译项目的症状。这是你得到的唯一错误。正如 OP 所解释的那样,在您第一次编译之前,代码完成通常会正常工作。然后,您可以删除对 dll 的引用,再次添加它,内置的 VS 语法检查器不会报错,直到您按 ctrl+shift+b。
  • @Martinho,关于文本的确切措辞,您可能是对的。打赌文字“我可以使用它,但是当我编译时……”让我觉得这就是问题所在。

标签: c# vb.net visual-studio visual-studio-2010


【解决方案1】:

转到项目设置并确保您没有为包含文本“客户端配置文件”的 .net 版本编译项目。

【讨论】:

  • 我确定它没有为客户端配置文件编译。当我注意到这个问题时,这是我确定的事情之一。它是为 .Net 4.0 框架编译的。我确实检查了动态运行时库 dll 是否也针对 .NET 4.0 进行了编译。
  • 评论怎么能说这不是解决方案,但这是公认的解决方案?
  • 在 C# 项目中,可以在项目属性 --> 应用程序 --> 目标框架中找到框架选项。在 VB.Net 中可以在项目属性 --> 编译 --> 高级编译选项 --> 目标框架中找到它
  • 我也有这个问题。我在解决方案顶部节点中添加了 dll 引用。我可以通过 F12 访问该课程。但是在构建时,我得到了错误。你提到的方式。但我不知道该怎么做。能详细介绍一下吗?
  • @JinHong 您需要转到项目的属性窗口并将.net 版本更改为不包含文本“客户端配置文件”的版本。右键单击有问题的项目并选择“属性”。现在单击“应用程序”选项卡。相应地更改“目标框架”。
【解决方案2】:

我刚刚遇到了一个类似这样的问题,即使这是一个老问题,我想我会在修复它的问题上添加我的 2c,因为其他答案都没有帮助:

无论出于何种原因,当我从上到下构建解决方案时,某个 dll 没有得到更新,并且输出包含更改的代码。因此,虽然我的解决方案没有明显的错误,但当您尝试构建时,它仍然引用旧的 dll 并开始抱怨。

简单来说就是直接重新构建有问题的项目,然后它拿起最新的dll并愉快地构建。

这似乎是一个奇怪的事故,因为在它工作/不工作之间没有任何配置发生变化。

【讨论】:

  • 谢谢。这是我现在遇到的确切问题在一年前的互联网帖子的某个地方找到完全正确的解决方案的罕见案例之一。祝你有美好的一天!
【解决方案3】:

有时,只需重新构建解决方案。

【讨论】:

  • 这个解决了我的问题,太令人沮丧了。无论如何......非常感谢你:)
【解决方案4】:

DLL 的位置很重要。

如果您在本地计算机上将引用添加到 Visual Studio 解决方案之外的 DLL,则不一定会将其复制到您的解决方案文件中(取决于解决方案/项目的类型)。

如果这是您的问题,那么您需要将 DLL 放在另一台计算机上的相同路径中,或者将其复制到您的解决方案中,以便它与解决方案文件一起部署,并更改引用。

您也可以使用构建说明来处理此问题,但这可能超出您目前的期望。

【讨论】:

  • 问题是项目中引用了dll,我可以通过项目中的对象浏览器浏览dll。错误消息只是我上面的简单错误消息 - 找不到类型或命名空间名称“WorldBusiness”(您是否缺少 using 指令或程序集引用?)
【解决方案5】:

很可能您的 dll 引用了客户端项目未引用的另一个 dll,并且您的 dll 代码将第三个 dll 中的类型或接口暴露给客户端代码。

如果您发布确切的消息,我们将能够提供更好的帮助。

【讨论】:

  • 我发布的消息是确切的消息。我是否需要将第三个 dll 添加到客户端代码才能使其正常工作?
  • 你可以试试看是否有帮助。
【解决方案6】:

您使用的是 .net 4.0 吗?

如果是,这个 dll 可能与 .net 4.0 不兼容

【讨论】:

  • 类库引用了我从dlr.codeplex.com/releases/view/21425编译下载得到的动态运行时库dll
  • 我遇到了一个来自非托管 dll 的问题。我遇到了同样的错误 - 毫无问题地引用了它,使用了 using 语句,然后在运行它之后得到了与您在此处显示的相同的消息。将项目降级到 .net 3.5 后,我能够使其工作
【解决方案7】:

在我的例子中,主项目(WinForm)被配置为框架目标:FW 4.0“客户端配置文件”。我更改为 FW 4.0 并且工作完美!! 第一次我正在查看引用的项目,它们还可以,但主要项目没有。我希望这会有所帮助。谢谢。

【讨论】:

    【解决方案8】:

    在我的情况下,在通过问题项目的“管理 NuGet 包”上下文菜单添加对 Microsoft BCL 构建组件 的引用后,此编译错误就消失了。

    之前:我有项目 Main(控制台应用程序)引用项目 A(类库)。 A 项目依赖于 Microsoft BCL 构建组件。

    之后:我开始重构,我为单独的项目挑选了几个类New。它还依赖于A。但是编译错误发生在项目 New 上,好像没有引用 New -> A (尽管 Visual Studio 没有突出显示据称未找到编译错误列表中列出的接口和类)。

    所以我检查了项目 A 的依赖项,发现那里有 Microsoft BCL Build Components。 将其添加到 New 的依赖项后,一切正常。 最有趣的是,Main 确实不 包含此依赖项并且它不需要它。

    希望这会有所帮助。

    【讨论】:

      【解决方案9】:

      你只需要再次检查你的类文件的命名空间......它会工作

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-10-08
        • 2022-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-12
        • 1970-01-01
        相关资源
        最近更新 更多