The type or namespace name could not be found
我有一个
prjform引用prjtest,prjform有一个带有
1 | using PrjTest; |
找不到类型或命名空间名称"prjtest"(是否缺少using指令或程序集引用?)
我已尝试以下方法解决此问题:
我做了家庭作业,花了太长时间在网上寻找答案,但所有的解决方案都没有帮助。
我还可以试试什么?
看看这个问题。
结果发现这是一个客户端分析问题。
prjform设置为".NET Framework 4客户端配置文件"我把它改为".NET Framework 4",现在我有了一个成功的构建。
谢谢大家!我想它认为,在花了这么多时间在网上搜索之后,我会在发布几分钟后找到解决方案,我想诀窍是知道要问的正确问题。
就我而言,我有:
引用的dll:
项目:
由于上述不匹配,4.0项目在4.5.dll的命名空间中看不到。我将.dll重新编译为target.net 4.0,我很好。
PrjForm was set to".Net Framework 4 Client Profile" I changed it to".Net Framework 4", and now I have a successful build.
这对我也很管用。谢谢。我尝试了一个dotnet的RDF示例,其中我从dotnetrf下载了工具包。
Net4客户端配置文件:始终针对所有客户端桌面应用程序(包括Windows窗体和WPF应用程序)的Net4客户端配置文件。
Net4完整框架:仅当应用程序所需的功能或程序集未包含在客户端配置文件中时,目标Net4已满。这包括:如果您正在构建服务器应用程序,例如:
- ASP.NET应用程序
- 基于ASMX的服务器端Web服务
如果使用传统客户端方案,例如:o使用net4中已弃用但不包含在客户机配置文件中的system.data.oracleclient.dll。
- 使用旧的Windows工作流基金会3或3.5(WF3.0,WF3.5)
如果以开发人员方案为目标,并且需要诸如msbuild之类的工具,或者需要访问诸如system.design.dll之类的设计程序集
可能导致此错误的另一个原因是使用较新版本的.NET生成的nuget包。
原始错误:
1 2 | frmTestPlanSelector.cs(11,7): error CS0246: The type or namespace name 'DatabaseManager' could not be found (are you missing a using directive or an assembly reference?) |
在日志的进一步内容中,我发现了:
elease\DatabaseManager.dll" could not be resolved because it has an indirect dependency on the assembly"System.Data.SQLite, Version=1.0.94.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" which was built against the".NETFramework,Version=v4.5" framework. This is a higher version than the currently targeted framework".NETFramework,Version=v4.0".
解决方案是重新安装nuget包:
http://docs.nuget.org/docs/workflows/reinstalling-packages
我解决了我的问题,因为另一个项目用.NET 4.5编码,另一个用4.0编码。
我遇到了这个问题。
项目B参考项目A。
项目A编译为.dll(程序集名称=A)。
项目B编译为A.dll(程序集名称A)。
Visual Studio 2010没有捕捉到这一点。Resharper没问题,但不会编译。Winforms设计器给出了一条误导性的错误消息,指出可能是由于不兼容的平台目标造成的。
在经历了痛苦的一天后,解决方案是确保程序集没有相同的名称。
引用的项目也可能以.NET 4.0为目标,而控制台应用程序项目以.NET 4.0客户端库为目标。
虽然它可能与这个特定的案件无关,但我认为其他人可以发现这个信息是有用的。
using语句引用的是命名空间,而不是项目。
确保在引用的项目中具有适当命名的命名空间:
1 2 3 4 5 6 7 | namespace PrjTest { public class Foo { // etc... } } |
阅读有关msdn上命名空间的详细信息:
- 使用命名空间
我也有同样的问题。目标框架对我来说很好。但它仍然不起作用。我安装了VS2010 SP1,并在prjtest上进行了"重建"。然后它开始为我工作。
编译的dll应具有公共类。
对于COM/ActiveX引用,vs 2012将在using语句上显示此错误。这很有趣,因为它说的可能是您缺少了一个using语句。
要解决这个问题:注册实际的COM/ActiveX DLL,即使它在邻居项目中,并通过COM通道而不是项目通道添加引用。它将添加interop.projectname而不是projectname作为引用,这解决了这个奇怪的错误。
将框架更改为
1 | .NET Framework 4 Client Profile |
为我做了这项工作。
刚刚将应用程序的目标框架更改为".NET Framework 4"。
错误消失了。
祝你好运;D
检查项目属性,引用路径应为空,如下所示:
当做
如果您的项目(prjtest)没有在
项目(prjtest)是否包括"prjtest"名称空间中公共的任何类或类型?
可能导致这种行为的其他问题是构建配置。
我有两个项目的配置设置为构建到特定的文件夹中。像以东十一〔0〕和以东十一〔1〕一样,第二个是以东十一〔0〕和以东十一〔3〕。
我做了什么,我去了
然后项目开始正确地构建,并且能够看到名称空间。