类型是在未被引用的程序集中定义的,如何找出原因?

104

我知道这个错误信息很常见,SO上也有很多关于这个错误的问题,但是到目前为止没有任何解决方案能够帮助我,所以我决定发问。与大多数类似问题的不同之处在于我使用了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:\Windows\Microsoft.NET/*.*内所有Project.Rights.dll的实例。根据这篇文章的内容,我检查了相关.cs文件的生成操作是否设置为“编译”,它们是这样设置的。我还仔细检查了包含“Project.Rights.OperationsProvider”类型的.cs文件是否部署到了App_Code目录中。

由于某种原因,应用程序没有在App_Code目录中查找该类型。由于我已经删除了我知道的所有Project.Rights.dll实例,我不知道错误消息所提到的程序集是哪个。


6
你正在使用一个类(假设为 A),该类公开了类型为 Project.Rights.OperationsProvider 的方法/属性/某个东西。编译器需要知道这是什么,然后会搜索该程序集(Project.Rights)。如果它找不到它(因为你的网站项目中没有对它的引用)...你就会得到这个错误。解决方案:不要从系统中删除该程序集!!! 添加对它的引用。 - Adriano Repetti
3
请尝试前往“工具-选项-项目和解决方案-生成和运行”,将两个详细度级别都设置为“详细”。这将告诉你哪些依赖项存在问题,以及编译器在哪里查找它们。 - danludwig
21个回答

-3

清理解决方案并重新构建对我有用(在Visual Studio中,这些选项是您右键单击解决方案资源管理器时获得的),错误已经在我的项目中消失了。


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