我正在尝试为Mvc3 RTM运行期货。从webPI安装mvc3后没有包含.dll。
我已经下载了源代码,并尝试自己构建它,但是当我将它放入我的解决方案并将名称空间添加到Views文件夹下的web.config时,我在每个页面上都会出现以下错误:
S0012: The type 'System.Web.Mvc.Controller' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null'.
我想这是因为强烈的命名或其他方面的东西。
我如何启动和运行期货?
编辑:
1)我可能错了,但是从内存来看,当您下载并安装以前版本的MVC时,它会在Program File / Microsoft ASP.NET / Asp .net MVC2下为您提供Microsoft.Web.Mvc .dll。安装WebPI后,该位置只有System.Web.Mvc.dll。
2)绝对不是GAC ......它不是这个大会的地方(我也检查过以确保)
3)无效的项目是目标项目。我创建了一个新的'Asp .net Mvc 3 Application'来运行它以确保它有效(确实如此)。然后我添加了对我从Mvc 3源代码构建的程序集的引用,并更改了“Views”文件夹下的web.config。
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="Microsoft.Web.Mvc" />
</namespaces>
</pages>
4)一旦删除了namespace元素和dll,项目就会再次运行。
答案 0 :(得分:10)
您可以下载source code of MVCContrib并在bin/AspNetMvc
文件夹中找到针对ASP.NET MVC 3.0编译的Microsoft.Web.Mvc
程序集。
答案 1 :(得分:1)
现已添加到MVC 3 RTM版本中:
http://aspnet.codeplex.com/releases/view/58781#DownloadId=211128
直接链接在这里:
http://aspnet.codeplex.com/releases/view/58781#DownloadId=211128
答案 2 :(得分:0)
在构建MvcFutures项目时,您必须将System.Web.Mvc和System.Web.WebPages的引用替换为GAC中的引用,否则您将必须根据下载的Mvc源代码构建目标项目
这两个选项都适合你。
答案 3 :(得分:-1)
你需要在web.config和命名空间中包含程序集 - 如果你从一个mvc2项目开始,你可能在那里有一行
当然需要更改为3.0,您可能还需要更新绑定重定向。
当你说没有包含dll时,你检查过gac吗?如果它在那里你不需要本地文件让系统根据强名称找到它。
如果您是从源代码构建的,因此您的版本具有不同的强名称,那么您可能会遇到引用官方版本的第三方组件的问题,但只要Web配置中的名称匹配,您就可以使用东西。您需要添加自己的密钥,以便令牌不为空。