如何调试MVC4的代码

如何调试MVC4的代码,第1张

下载了 http //aspnetwebstack codeplex com/SourceControl/list/changesets 这上面

.NET 4.0 RTM的源码,

装了一个git,然后下载就可以了

git clone https //git01 codeplex com/aspnetwebstack.git

时间稍微长了点儿,半个小时吧

然后里面src全是MVC4的源码(其实很大一部分都在里面了)

解决反感是runtime.sln的,打开之后,在里面新建一个MVC4的项目,

这里有个问题,我下载的MVC4,在

system.web.mvc项目里Properties\CommonAssembley.cs里,全是5.0.0.0的版本号,

我把他改成了5.0.0.1

#if

ASPNETMVC [assembly: AssemblyVersion("5.0.0.1")] [assembly:

AssemblyFileVersion("5.0.0.1")] [assembly: AssemblyProduct("Microsoft ASP.NET

MVC")] #elif ASPNETWEBPAGES

然后修改根目录下的 web.config

<appSettings>

<add

key="webpages:Version" value="3.0.0.0" />

<add key="webpages:Enabled" value="false" />

<add key="PreserveLoginUrl" value="true" />

<add key="ClientValidationEnabled" value="true" />

<add key="UnobtrusiveJavaScriptEnabled" value="true" />

</appSettings>

这里之所以改成3.0.0.0的原因,是因为在我下载的源码里,他的版本号就是3.0,

<runtime>

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

<dependentAssembly>

<assemblyIdentity name="System.Web.Helpers"

publicKeyToken="31bf3856ad364e35" />

<bindingRedirect oldVersion="1.0.0.0-2.0.0.0"

newVersion="3.0.0.0" />

</dependentAssembly>

<dependentAssembly>

<assemblyIdentity name="System.Web.Mvc"

publicKeyToken="31bf3856ad364e35" />

<bindingRedirect

oldVersion="1.0.0.0-4.0.0.0" newVersion="5.0.0.1" />

</dependentAssembly>

<dependentAssembly>

<assemblyIdentity name="System.Web.WebPages"

publicKeyToken="31bf3856ad364e35" />

<bindingRedirect oldVersion="1.0.0.0-2.0.0.0"

newVersion="3.0.0.0" />

</dependentAssembly>

<dependentAssembly>

<assemblyIdentity name="EntityFramework"

publicKeyToken="b77a5c561934e089" />

<bindingRedirect oldVersion="1.0.0.0-5.0.0.0"

newVersion="5.0.0.0" />

</dependentAssembly>

<dependentAssembly>

<assemblyIdentity name="WebGrease"

publicKeyToken="31bf3856ad364e35" />

<bindingRedirect oldVersion="1.0.0.0-1.3.0.0"

newVersion="1.3.0.0" />

</dependentAssembly>

</assemblyBinding>

</runtime>这里的改成了我自己的版本号

然后修改view下面的web.config

<configSections>

<sectionGroup name="system.web.webPages.razor"

type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup,

System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral,

PublicKeyToken=31BF3856AD364E35">

<section name="host"

type="System.Web.WebPages.Razor.Configuration.HostSection,

System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral,

PublicKeyToken=31BF3856AD364E35" requirePermission="false" />

<section name="pages"

type="System.Web.WebPages.Razor.Configuration.RazorPagesSection,

System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral,

PublicKeyToken=31BF3856AD364E35" requirePermission="false" />

</sectionGroup>

</configSections>

这里修改成了3.0,当然具体是什么,看你自己下载的,但是我觉得大部分应该跟我的是一样的(环境VS2012,源码4.0 RTM)

<system.web.webPages.razor>

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory,

System.Web.Mvc, Version=5.0.0.1,

Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

<pages pageBaseType="System.Web.Mvc.WebViewPage">

<namespaces>

<pages

validateRequest="false"

pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter,

System.Web.Mvc, Version=5.0.0.1,

Culture=neutral, PublicKeyToken=31BF3856AD364E35"

pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc,

Version=5.0.0.1, Culture=neutral,

PublicKeyToken=31BF3856AD364E35"

userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc,

Version=5.0.0.1,

Culture=neutral,

PublicKeyToken=31BF3856AD364E35">

同样,修改之(具体是不是不修改也成,我就不知道了,我是按照网上的方法改的,最后的地方,会给出连接大家注意学习吧)

这样,配置文件和MVC代码中的版本号,就修改完了,

然后打开VS2012的命令行,执行

Run

"sn.exe -Vr *,31BF3856AD364E35" in the Visual Command line (哈哈,你看,我真的是COPY的,原创的东西几乎没有)

然后把项目中的system.web.mvc的引用,改到你的MVC4的源码里的项目,当然,不止这一个,不然会有很多地方报错的,大致的DLL有 :

system.web.razotsystem.web.webpagessystem.web.webpages.deployment

system.web.webpages.razor这里不全没关系,网页上会明确提示少哪个的.

如果出现了一个类型转换的错误:

用户代码未处理

System.InvalidCastException

HResult=-2147467262

Message=[A]System.Web.WebPages.Razor.Configuration.HostSection 无法强制转换为

[B]System.Web.WebPages.Razor.Configuration.HostSection。类型 A

源自“System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral,

PublicKeyToken=31bf3856ad364e35”(在上下文“Default”中的“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_2.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll”位置处)。类型

B 源自“System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral,

PublicKeyToken=31bf3856ad364e35”(在上下文“Default”中的“C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary

ASP.NET

Files\root\49f25bf0\9ce908d5\assembly\dl3\70f2ab4b\b0630cdc_834fce01\System.Web.WebPages.Razor.dll”位置处)。

Source=System.Web.WebPages.Razor

这个错误,就是我为什么要该system.web.webpages的版本好的原因了如果出现其他DLL,大家也可以随着改一下

之后,就可以在页面中随便加空间,就能看到断点的执行了,好运

当然,网上还有个家伙说不用修改源代码,但是要下载SkipStrongNames的一个东西,但是我点了连接,提示我下载已经移除了,不知道怎么回事,要是有搞定了的同学,也请通知我下哈,学习学习

Bundle的注册是在项目根下的Global.asax文件中,这个文件中的Application_Start是网站程序的开始,里面注册了网站各种初始化的内容,其中就包括对BundleTable的Bundle添加:

默认情况下,Bundle是会对js和css进行压缩打包的,不过有一个属性可以显式的说明是否需要打包压缩:

BundleTable.EnableOptimizations = true

如果将其设为false,那么就会和下面说的debug=true时的情况相同了。

在使用时,在相应位置调用ScriptRender和StyleRender的Render方法:

最终用户页面即可达到效果打包压缩效果。

有一个地方主要注意,在Web.config中,当compilation编译的debug属性设为true时,表示项目处于调试模式,这时Bundle是不会将文件进行打包压缩的,页面中引用的js和css会分散原样的展示在html中,这样做是为了调试时查找问题方便(压缩以后就恶心了。。。)。

最终部署运行时,将debug设为false就可以看到js和css被打包和压缩了。

=============

使用Bundle的关键在于要向ASP.NET中的BundleTable注册Bundle。

如果要在ASP.NET WebForm中使用Bundle,需要在新建项目时选择.NET Framework 4.5,最好使用模板网站新建,这样就可以直接看到Bundle了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11523444.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存