新电脑在VB.NET中出现“导入的类型命名空间不包含任何公共成员”的错误。

8
我刚得到一台新电脑(Win 7),并安装了与旧电脑相同版本的VS 2010。我从源代码控制中获取了一个包含两个项目的VB.NET解决方案,其中一个项目构建成功了,但是另一个项目在每个非MS Imports语句处都会出现以下错误提示:

命名空间或导入的类型“&1”不包含任何公共成员或无法找到。请确保定义了命名空间或类型,并且至少包含一个公共成员。请确保导入的元素名称未使用任何别名。

具有讽刺意味的是,在同一解决方案中有效的项目引用了所有相同的DLL文件。我已经删除并重新添加了这些DLL文件,所以我知道它们存在,并且我可以在对象浏览器中展开它们,所以我知道它们包含公共方法。

我已经没有想要尝试的想法了。请问有人可以帮忙吗?


工作中的项目是否具有相同的导入语句?如果您创建一个全新的项目并添加引用,然后再添加导入语句,那么会怎样呢?您是使用文件引用还是项目引用? - Chris Dunaway
这两个项目引用的程序集版本可能不同吗?新电脑上只安装了一个版本,而旧电脑上安装了多个版本,是这个原因吗? - J...
两个项目使用相同的导入,并且外部引用指向相同的文件位置。失败的项目具有对工作项目的引用,该引用也无法正常工作。两个项目在“我的项目”下的“引用”选项卡中定义了引用。同一解决方案中的新项目似乎运行良好,但替换失败的项目将是一个可怕的痛苦。 - jtaylor___
“正在工作的项目却不能正常运行”?你尝试过删除项目的Bin和Obj文件夹,清理解决方案,然后进行完整的重建吗? - Chris Dunaway
坏项目在同一解决方案中引用了好项目和外部DLL,导致出现错误。我删除了Bin和Obj文件夹,进行了清理和构建操作,但仍然出现“类型&1未定义”和“无法注册程序集&2 - 拒绝访问。请确保您以管理员身份运行应用程序。拒绝访问注册表项&3。”其中&2是工作项目的Debug DLL副本路径。需要以管理员身份运行VS吗? - jtaylor___
7个回答

11

我曾遇到同样的问题,通过更改项目属性->编译->高级编译选项->目标框架值从.NET Framework 4.0 Client Profile到.NET Framework 4.0来解决了这个问题。


7

我曾经遇到过这个问题。对我来说,新的DLL是针对Dot Net 4.5版本的,而引用它的项目只针对4.0版本。将新的dll切换以匹配4.0版本解决了这个问题。


2
我以前也遇到过类似的问题。我的情况是dll文件位于网络共享驱动器上(在我的系统中显示为q:),因此当我引用它们时,文件路径是q:\文件夹结构\file.dll。更换计算机后,我的系统不再将该共享驱动器识别为q:\,而是识别为另一个驱动器号,导致我的程序出现类似的错误。
在我的情况下,我通过更改引用dll的方式,从本地系统分配的驱动器号更改为网络路径(\服务器名称\驱动器号\文件路径\file.dll),解决了这个问题,并防止它再次发生。

1

我遇到了相同的问题。我所引用的DLL是在3.5框架中构建的。我正在引用该DLL的项目是在2.0中构建的。我将引用的项目切换到3.5,然后它就完美地构建了。


0

这发生在我使用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,并且导入工作正常,页面编译也正常。所以可能是与我的临时修复无关的临时问题)


0

我曾经遇到过这样的问题,即多个项目引用了同一版本的框架。我通过以下步骤解决了这个问题。

  1. 删除对DLL的引用
  2. 清理并重新构建DLL
  3. 清理并重新构建项目
  4. 重新添加引用。

0

当我开始搜索这个问题时,我已经解决了它,我所需要做的就是在解决方案资源管理器中删除并重新添加引用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接