尝试添加强类型视图时,在MVC项目中找不到任何类

时间:2010-09-22 21:29:40

标签: asp.net-mvc asp.net-mvc-2

我有一个非常奇怪的问题。每当我尝试使用ASP.NET MVC2中的“添加视图”对话框,然后通过从可用类的下拉列表中选择“查看数据类”来尝试“创建强类型视图”时,没有任何类(“模型” “)在我的MVC项目中出现了。

非常奇怪的部分是我的MVC项目引用的所有程序集,即使解决方案中的其他项目,它们的类也会出现。我已经尝试过清理,重建,清理obj文件夹,但由于某种原因,每次都没有出现我的实际MVC程序集中的类。它之前工作正常,但现在它已经不复存在了,我无法想到任何已经发生变化的事情。

以前有人遇到过这个问题吗? 谢谢你的帮助!

示例图片:

http://imgur.com/47itE.png

5 个答案:

答案 0 :(得分:13)

它因为你没有构建你的应用程序,首先构建你的应用程序,然后创建一个视图然后它将显示。

答案 1 :(得分:2)

想出来,这是解决方案:

MVC项目引用了一组引用“CommonServiceContractAssembly.dll”的服务契约程序集。 MVC项目也引用了“CommonServiceContractAssembly.dll”。 MVC项目和服务合同程序集都构建为引用略有不同版本的“CommonServiceContractAssembly.dll”

当Visual Studio 2010反映所有引用的程序集“创建一个强类型视图”时,我相信它不知道如何处理被引用的稍微不同版本的“CommonServiceContractAssembly.dll”,所以它没有显示依赖于“CommonServiceContractAssembly.dll”的任何程序集的反射“强类型模型”。

修复方法是在Visual Studio 2010启动时实际强制Visual Studio 2010的应用程序域使用正确版本的“CommonServiceContractAssembly.dll”。这是通过如下的Post Build事件完成的:

REM这是从模型生成T4以使其正常工作所必需的 复制“$(TargetDir)”CommonServiceContractAssembly.dll“”$(DevEnvDir)PublicAssemblies \“/ Y

所以我将“CommonServiceContractAssembly.dll”复制到Visual Studio将加载它的地方“无处不在”。在我这样做之后一切正常。

另一种选择是始终确保共享公共依赖项的所有程序集始终使用该依赖项的相同版本进行编译。

答案 2 :(得分:1)

请确保将它们标记为“Public”,并在打开AddView对话框之前编译一次。

答案 3 :(得分:-1)

项目中的某些类型会被该对话框过滤掉(例如,以“Controller”结尾的所有类型,或SystemMicrosoft命名空间中的所有类型)。您的项目可能没有任何可以通过对话框过滤器的类型。

答案 4 :(得分:-1)

添加视图之前只需构建解决方案,然后添加视图即可。 如果它不起作用,那么你可以再次关注我,我会给你另一个解决方案