我知道错误消息很普遍,因此对此错误有很多疑问,但是到目前为止,还没有解决方案对我有所帮助,所以我决定提出这个问题。与大多数类似问题的不同之处在于我使用App_Code目录。
错误信息:
CS0012: The type 'Project.Rights.OperationsProvider' is defined in an assembly that is not referenced. You must add a reference to assembly 'Project.Rights, version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
源文件:
c:\inetpub\wwwroot\Test\Website\App_Code\Company\Project\BusinessLogic\Manager.cs
以下的建议在这里和这里,我已经删除了C内Project.Rights.dll的所有实例:\ WINDOWS \ Microsoft.NET /.根据这个,我检查,如果有问题的.cs文件具有生成操作设置为“编译” 。他们是这样。我还仔细检查了包含“ Project.Rights.OperationsProvider”类型的.cs文件是否已部署到App_Code目录。
由于某种原因,应用程序不在App_Code目录中寻找类型。由于我已经删除了Project.Rights.dll的所有实例(据我所知),因此我不知道错误消息提到的程序集。
当您收到此错误时,发生的情况并不总是很明显,但是正如错误所言-您缺少参考。以下面的代码行为例:
MyObjectType a = new MyObjectType("parameter");
它看起来很简单,您可能已经正确引用了“ MyObjectType”。但是,可以说“ MyObjectType”构造函数的重载之一采用了您未引用的类型。例如,有一个过载定义为:
public MyObjectType(TypeFromOtherAssembly parameter) { // ... normal constructor code ... }
至少有一种情况会出现此错误。因此,寻找这种类型的模式,在该模式中您已引用了该类型,但并非所有类型的属性或方法参数都可以引用该类型的函数。
希望这至少可以使您朝正确的方向前进!