我已经创建了一个新的C#asp.net mvc 4.0(beta)Internet应用程序,我在Visual Studio 2010(sp1)的“添加视图”对话框中有一些奇怪的行为。 当我决定创建强类型视图时,在“添加视图”对话框中,“模型”类下拉列表不会显示我的ViewModel类。
对于记录,是的,我在触发“添加视图”对话框之前编译了应用程序。
我相信我已经确定了问题,但不知道如何解决它。 如果有人关心重现行为,下面是重复步骤:
看来,只要我创建一个实现IAutofacRegistration
接口并构建应用程序的类,我就不再能够在该下拉列表中查看我的ViewModel。
任何人都可以确认他们是否和我一样得到了相同的结果吗? 更重要的是,如何解决这个问题?
重要:我在mvc 3.0应用程序中尝试了完全相同的步骤,并且发生了完全相同的行为......所以这与BETA版本无关。
此致 文斯
答案 0 :(得分:15)
如果收到错误消息:“正在运行转换:输入文件似乎使用此模板不支持的架构版本。这可能导致编译错误。请使用'添加新生成的项'添加更新的模板”
您使用的是EF 5.x.您必须将EF 5.x的元数据添加到T4模板。在文件头中调用DefineMetadata()
<#@ template language="C#" debug="false" hostspecific="true"#>
<#@ import namespace="System.Text.RegularExpressions" #>
<#@ include file="EF.Utility.CS.ttinclude"#><#@ output extension=".cs"#><#
DefineMetadata();
位于模板底部的创建方法
private void DefineMetadata()
{
TemplateMetadata[MetadataConstants.TT_TEMPLATE_NAME] = "CSharpDbContext.Types";
TemplateMetadata[MetadataConstants.TT_TEMPLATE_VERSION] = "5.0";
TemplateMetadata[MetadataConstants.TT_MINIMUM_ENTITY_FRAMEWORK_VERSION] = "5.0";
}
答案 1 :(得分:9)
我解决了这个问题,在2个小时内疯了,然后从解决方案中的Properties-folder中删除Assembly.cs。在我重建了解决方案之后,“添加视图”模型 - 下拉突然显示可以找到我所有的ViewModel,这很奇怪。
我想Assembly.cs中定义的程序集版本与项目中使用的实际版本混淆了。无论如何,它现在适用于我的情况。
答案 2 :(得分:3)
对我来说有用的是在创建模型后简单地构建解决方案。然后我能够在下拉列表中找到我的模型。
答案 3 :(得分:2)
我也注意到了这个问题(在Visual Studio 2010上使用MVC 4 Beta)。重新启动Visual Studio为我解决了这个问题。
答案 4 :(得分:1)
更新:在撰写本文时,我无法再重现此错误。也许我使用的NuGet包已经更新到更新的版本并偶然修复了错误。
我会将这篇文章标记为已关闭。
感谢大家对此的意见!
文斯
答案 5 :(得分:1)
只需清理并构建您的解决方案。它对我有用。
答案 6 :(得分:1)
另一种解决方案是添加到堆中,因为其他任何一种都不适合我。这是Visual Studio在处理长文件路径和命名空间方面很糟糕的另一个例子。
在我的情况下,命名空间太长而无法显示在&#34; Model类&#34;落下。缩短命名空间(本身就是一种荒谬的痛苦)使得下拉工作再次发挥作用!
答案 7 :(得分:0)
使用VS 2010和MVC 3.0,Add View Model类下拉列表一度没有为我显示任何类。伊万建议重启VS似乎对我有用。
我尝试删除AssemblyInfo.cs,做了一个Clean和一个Rebuild,但那些没有解决问题。当我重新启动VS时,模型类又回到了下拉列表中。
答案 8 :(得分:0)
我意识到这有点过时了。我有类似的情况,我的课程不会加载到视图模板向导。我使用VS 2012和MVC3。团队中的其他人都很好,幸运的是老我有问题。经过大量的研究和尝试很多事情,唯一一直在修复它的是在安全模式下运行VS(从命令提示符:&#34; C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ devenv .exe&#34; / safemode)。我的一个扩展程序必须导致问题,并且在安全模式下运行那些未加载的。