Cómo depurar código MVC4
Código fuente NET 4.0 RTM,
Instala un git y descárgalo.
git clone /aspnetwebstack.git
Tarda un poco, media hora;
Entonces el src interno es el código fuente completo de MVC4 (en De hecho, una gran parte están todos dentro).
La resolución de objeciones es en tiempo real. SLN. Después de abrirlo, cree un nuevo proyecto MVC4 en él.
Aquí hay un problema. Descargué MVC4 y Properties\CommonAssembley.cs en el proyecto system.web.mvc son todos números de versión 5.0.0.0.
Lo cambié a 5.0.0.1.
#If
aspnet MVC[ensamblado:versión del ensamblado(" 5 . 0 . 0 . 1 ")][ensamblaje:
versión del archivo del ensamblado(" 5 . 0 . 0 . 1 ")][ensamblaje: producto de ensamblaje ("Microsoft ASP.NET
MVC ")]# página web elif aspnet
Luego modifique la web en el directorio raíz .config.
& ltappSettings & gt
& ltAdd
key= "Página web: Versión" valor = "3. 0. 0. 0"/& gt; /p>
& ltadd key = "Página web: habilitada" value = " false "/& gt;
& ltadd key = " PreserveLoginUrl " value = " true "/& gt;
& ltadd key = " ClientValidationEnabled " value = " true "/& gt;
& ltadd key = " JavaScript obstructivo habilitado " value = " true "/& gt;
></appSettings>
La razón por la que se cambió a 3.0.0.0 es porque en el código fuente que descargué, su número de versión es 3.0.
& ltruntime>
& ltassembly vinculante xmlns = " urn:schemas-Microsoft-com:ASM . v 1 " >>p>
& ltdependentAssembly & gt
& ltassemblyIdentity name="System.Network Assistant"
token de clave pública = " 31bf 3856 ad 364 e 35 "/>
& ltbinding redirigir versión anterior = " 1 0 . 0 . 0-2 . 0 0 0 "
newVersion="3.0.0.0" />
& lt/ensamblaje dependiente >
& ltdependentAssembly & gt
& ltassemblyIdentity name="System.
Web.Mvc "
token de clave pública = " 31bf 3856 ad 364 e 35 "/>
& redirección ltbinding
versión anterior = " 0 . 0 . 0-4 . 0 . 0 " nueva versión = " 5 0 0 . & ltdependentAssembly & gt
& ltassemblyIdentity name="System. Web .Página web"
token de clave pública = " 31bf 3856 ad 364 e 35 "/>
& ltbinding redirigir versión anterior = " 0-2 . 0 . 0 . 0 "
newVersion="3.0.0.0" />
& lt/ensamblaje dependiente & gt;
& ltdependienteAsamblea & gt p >
& ltassembly nombre de identidad = " marco de entidad "
token de clave pública = " b 77 a5 c 561934 e 089 "/>
& ltbinding redirigir versión anterior = " 1 . 0 . 0 . 0-5 . >
& ltdependentAssembly & gt
& ltassembly nombre de identidad = " grasa web "
token de clave pública = " 31bf 3856 ad 364 e 35 "/>
& ltbinding redirigir versión anterior = " 1 . 0 . 0 . 0-1 . 3 . 0 . 0 "
nueva versión = " 1 . 3 . 0 . 0 "/& gt; p >
& lt/dependent asamblea & gt;
& lt/assembly vinculante & gt;
& lt/runtime & gt; Número de versión
Luego modifique web.config en vista
& ltconfigSections & gt
& ltsectionGroup name="system.web.web.razor"
p>
tipo= "Sistema. Web.página web de razor.configuración.grupo de secciones web de razor.
Sistema. Web.Web.Razor, versión=3.0.0.0, cultura=neutral,
token de clave pública=31bf 3856 ad 364 e 35 " >>p>
& ltsection name="host "
tipo= "Sistema.
Web .página web .configuración de razor . Web.Web.Razor, versión=3.0.0.0, cultura=neutral,
token de clave pública=31bf 3856 ad 364 e 35 " requiere permiso = " falso "/& gt;
& ltsection nombre="páginas "
tipo="System. Web. Página web de afeitar. Configuración de páginas de afeitar,
Sistema. Web.Web.Razor, versión=3.0.0.0, cultura=neutral,
token de clave pública=31bf 3856 ad 364 e 35 " requiere permiso = " falso "/& gt;
& lt/section group & gt;
& lt/configsections & gt;
Por supuesto, depende de lo que hayas descargado, pero creo que se ha cambiado a 3.0. La mayoría de ellos deberían ser iguales al mío (entorno VS2012, código fuente 4.0 RTM)
& ltsystem.web .Página web & gt
& ltHost factoryType="System. Web.Mvc.MvcWebRazorHostFactory,
Sistema. Web.Mvc, versión=5.0.0.1,
Cultura=neutral, token de clave pública=31bf 3856 ad 364 e 35 "/>
& ltpages pageBaseType="System. Web.Mvc.WebViewPage " >
& ltNamespace>
& ltPage
validateRequest="false "
pageParserFilterType ="System. Web.Mvc.ViewTypeParserFilter,
Sistema. Web.Mvc, versión=5.0.0.1,
Cultura=neutral, token de clave pública=31bf 3856 ad 364 e 35 "
pageBaseType="System. Web.Mvc.ViewPage, sistema. Web.Mvc,
versión=5.0.0.1, cultura=neutral,
token de clave pública=31bf 3856 ad 364 e 35 "
userControlBaseType= "Sistema . Web.Mvc.ViewUserControl, Sistema. Web.Mvc,
versión=5.0.0.1,
cultura=neutral,
token de clave pública=31bf 3856 ad 364 e 35 " >> p >
De manera similar, modifíquelo (no sé si se puede hacer sin modificaciones, lo modifiqué según el método en Internet y le daré un enlace al final. Preste atención al estudio)
Así, simplemente modifique el número de versión en el archivo de configuración y el código MVC.
Luego abra la línea de comando de VS2012 y ejecute "Ejecutar" en la línea de comando visual sn.exe. VR*, 31bf3856ad364e35” (jaja, verás, realmente plagié, hay muy pocas cosas originales).
Luego cambie la referencia de system.web.mvc en el proyecto al proyecto en su código fuente MVC4. Por supuesto que hay más de uno, de lo contrario habrá muchos errores. La DLL general es la siguiente:
system.web.razot; system.web.webpage; system.web.webpage.deployment;
system.web.webpage.razot; incompleto Tampoco importa aquí, habrá instrucciones claras en el sitio web.
Si se produce un error de conversión de tipo:
No manejado por el código de usuario.
Sistema. InvalidCastException
HResult=-2147467262
Mensaje = [a] Sistema. La sección web.webpage.razor.configuration.host no se puede convertir.
Sistema B. Web .web.razor.configuration.hostsection.a
De "system.web.web.razor, versión=2.0.0.0, cultura=neutral,
token de clave pública = 31bf 3856 ad 364 e 35 "(" C:\Windows\Microsoft.net\Assembly\GAC_msil\system.web.web.razor\v4.0_2.0.0__) en "Predeterminado" en el contexto del tipo
b de 'system.web.web.razor, versión=3.0.0.0, cultura=neutral,
publickey-token=31 BF 3856 ad 364 e 35"("C:\Windows\Microsoft. NET\Framework\v 4.0.30319\Temporary"
ASP.NET
archivos\root\49 F2 BF 0 \9ce 908 D5\assembly\DL3\70 F2 ab 4b\ b 0630 CDC_834 FCE 01\system.web.webpages.razor.dll").
Fuente = sistema. Web.Web.Razor
Este error es la razón por la que espero que la versión system.web.Web sea buena; si aparecen otros dlls, se pueden modificar en consecuencia;
Puedes sentirte libre; para agregarlos más tarde Agregue espacios a la página para ver la ejecución de los puntos de interrupción. Buena suerte.