在 VB.NET 中导致“导入中指定类型的命名空间不包含任何公共成员”的新 pc
Posted
技术标签:
【中文标题】在 VB.NET 中导致“导入中指定类型的命名空间不包含任何公共成员”的新 pc【英文标题】:New pc causing "namespace of type specified in the imports doesn't contain any public member" in VB.NET 【发布时间】:2013-04-25 17:14:26 【问题描述】:我刚买了一台装有 VS 2010 的新 PC (Win 7)(与我的旧 PC 相同的版本)。我从包含两个项目的源代码管理中获得了一个 VB.NET 解决方案。其中一个项目构建良好。另一个项目将每个非 MS Imports 语句标记为:
在 Imports &1 中指定的命名空间或类型不包含任何公共成员或无法找到。确保命名空间或类型已定义并包含至少一个公共成员。确保导入的元素名称不使用任何别名。
具有讽刺意味的是,同一解决方案中的工作项目引用了所有相同的 DLL。我已经删除并重新添加了 DLL,所以我知道它们在那里,我可以在对象浏览器中展开它们,所以我知道它们包含公共方法。
我已经没有什么可以尝试的想法了。谁能给我一根骨头,好吗?
【问题讨论】:
工作项目是否有相同的 Imports 语句?如果您创建一个全新的项目并添加引用,然后添加 Imports 语句会怎样。那样有用吗?您使用的是文件引用还是项目引用? 这两个项目是否引用了不同版本的程序集?是不是新电脑可能只安装了一个版本,而旧电脑有几个? 两个项目使用相同的导入,并且外部引用指向相同的文件位置。失败的项目引用了同样不工作的工作项目。这两个项目都有在我的项目下的参考选项卡上定义的参考。同一解决方案中的新项目似乎运行良好,但替换失败的项目将是一个可怕的痛苦。"working project that is also not working"
工作项目不工作??您是否尝试过删除项目的 Bin 和 Obj 文件夹并清理解决方案,然后完全重建?
坏项目在同一解决方案中引用好项目以及外部 DLL 时出现错误。我删除了 Bin 和 Obj 文件夹的两个集合,做了一个干净的解决方案和一个构建解决方案。我仍然得到所有“类型 &1 未定义”加上“无法注册程序集 &2 - 访问被拒绝。请确保您以管理员身份运行应用程序。访问注册表项 &3 被拒绝。”其中 &2 是工作项目的 DLL 的调试副本的路径。 VS 必须以管理员身份运行吗?
【参考方案1】:
我已经解决了这个问题,一旦我用谷歌搜索这个问题,我所要做的就是在解决方案资源管理器中删除并重新添加参考
【讨论】:
【参考方案2】:这发生在我使用 System.Data.SqlClient 的 Visual Studio 2019 VB 项目中。由于 System.Data.SqlClient 的导入失败,我在页面上的声明中使用的所有 Sql 类——SqlConnection、SqlCommand、SqlDataReader——都未定义。
要修复它,我只需要在页面上为其中一个类声明我的第一个变量时使用对 System.Data.SqlClient.SqlConnection 的完整引用:
Using conn As System.Data.SqlClient.SqlConnection = New SqlConnection(GetConnectionString())
通过仅更改页面上的第一个声明,它修复了 Imports 行和页面上所有后续声明的编译错误。 (更奇怪的是,在像这样构建项目之后,我能够将声明恢复为仅引用 SqlConnection,并且导入工作并且页面编译正常。所以它可能是一个与我的临时修复无关的临时问题)
【讨论】:
【参考方案3】:我在引用相同版本框架的项目时遇到了这个问题。我通过以下步骤解决了它。
-
删除对 DLL 的引用
清理并重建 DLL
清理和重建项目
重新添加参考。
【讨论】:
【参考方案4】:我遇到了同样的问题。我引用的 DLL 是在框架 3.5 中构建的。我引用 DLL 的项目是在 2.0 中构建的。我将引用项目切换到 3.5,它构建完美。
【讨论】:
【参考方案5】:我遇到了同样的问题,我通过将 Project Properties->Compile->Advanced Compile Options->Target Framework 值从 .Net Framework 4.0 Client Profile 更改为 .Net Framework 4.0
【讨论】:
【参考方案6】:我遇到过这种情况。对我来说,新的 DLL 是针对 Dot Net 4.5,而引用它的项目只针对 4.0。切换新的 dll 以匹配解决了该问题。
【讨论】:
【参考方案7】:我之前也遇到过类似的问题。就我而言,问题在于 dll 位于网络共享驱动器上(在我的系统中显示为 q:),因此当我引用它们时,文件路径为 q:\folder structure\file.dll。在切换机器时,我的系统不再将该共享驱动器引用为 q:\,而是引用另一个驱动器号,导致我的程序出现类似错误。
在我的情况下,我能够纠正这个问题并防止它再次发生,方法是更改我从本地系统分配的驱动器号到网络路径 (\SERVER NAME\Drive Letter) 引用 dll 的方式\文件路径\file.dll)。
【讨论】:
以上是关于在 VB.NET 中导致“导入中指定类型的命名空间不包含任何公共成员”的新 pc的主要内容,如果未能解决你的问题,请参考以下文章
updateOrCreate 在 laravel 中导致 ErrorException
此代码如何在 ghostscript 中导致 -100 错误
EnterTransitionCoordinator 在 Android 5.0 中导致 NPE
Phonegap 插件:BarcodeScanner 在 Eclipse 中导致错误