2014-02-18 2 views
8

Во-первых - я рыскал SO и нашел много вопросов спрашивали то же самое, хотя и просто добавляя <add namespace="System.Web.Mvc.Html" /> в мой web.config Ждут» т вылечить вопрос ...«System.Web.WebPages.Html.HtmlHelper» не содержит определения для «ActionLink

Итак, я начал новый проект, основанный на шаблоне углового SPA - ссылка здесь:

http://visualstudiogallery.msdn.microsoft.com/5af151b2-9ed2-4809-bfe8-27566bfe7d83

Я модернизировал MVC до версии 5 & webApi до версии 2 - в соответствии с другим проектом с в решении.

Теперь на странице _layout на SPA-сайта Я пытаюсь использовать @Html.ActionLink помощника, хотя продолжают получать ошибку 'System.Web.WebPages.Html.HtmlHelper' does not contain a definition for 'ActionLink

Я уверен, что все это до некоторой конфигурации web.config - своего рода конфликт между тем, какие пакеты я установил и что настроено в конфигурации из шаблона.

В частности, эта часть:

<system.web.webPages.razor> 
    <host factoryType="System.Web.WebPages.Razor.WebRazorHostFactory, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <pages pageBaseType="System.Web.WebPages.WebPage"> 
     <namespaces>    
     <add namespace="System.Web.Helpers" /> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Optimization" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="System.Web.WebPages" /> 
     </namespaces> 
    </pages> 
    </system.web.webPages.razor> 

Если изменить это, чтобы использовать версию 5, то я получаю ошибку, что сборка (v5) не может быть расположен и т.д.

Я бегу идей о том, как разрешить этот конфликт.

Вот конфигурационные секции из моего SPA web.config

<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> 

Если изменить версию до 5, я получаю ошибку ниже:

Assembly Load Trace: The following information can be helpful to determine why the assembly 'System.Web.WebPages.Razor, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' could not be loaded. 


=== Pre-bind state information === 
LOG: DisplayName = System.Web.WebPages.Razor, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 
(Fully-specified) 
LOG: Appbase = file:///D:/Development/IS/IS/IS.TransactionDesk.SPA/ 
LOG: Initial PrivatePath = D:\Development\IS\IS\IS.TransactionDesk.SPA\bin 
Calling assembly : (Unknown). 
=== 
LOG: This bind starts in default load context. 
LOG: Using application configuration file: D:\Development\IS\IS\IS.TransactionDesk.SPA\web.config 
LOG: Using host configuration file: C:\Users\Darren\Documents\IISExpress\config\aspnet.config 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. 
LOG: Post-policy reference: System.Web.WebPages.Razor, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 
LOG: Attempting download of new URL file:///C:/Users/Darren/AppData/Local/Temp/Temporary ASP.NET Files/root/3407d437/8e7ba9a/System.Web.WebPages.Razor.DLL. 
LOG: Attempting download of new URL file:///C:/Users/Darren/AppData/Local/Temp/Temporary ASP.NET Files/root/3407d437/8e7ba9a/System.Web.WebPages.Razor/System.Web.WebPages.Razor.DLL. 
LOG: Attempting download of new URL file:///D:/Development/IS/IS/IS.TransactionDesk.SPA/bin/System.Web.WebPages.Razor.DLL. 
WRN: Comparing the assembly name resulted in the mismatch: Major Version 
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated. 

Stack Trace: 


[FileLoadException: Could not load file or assembly 'System.Web.WebPages.Razor, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)] 
    System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type) +0 
    System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName) +70 
    System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark) +39 
    System.Type.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase) +37 
    System.Web.Compilation.BuildManager.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase) +65 
    System.Web.WebPages.Razor.WebRazorHostFactory.DefaultTypeFactory(String typeName) +39 
    System.Web.WebPages.Razor.WebRazorHostFactory.CreateFactory(String typeName) +67 
    System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) +72 
    System.Web.WebPages.Razor.WebRazorHostFactory.CreateHostFromConfigCore(RazorWebSectionGroup config, String virtualPath, String physicalPath) +313 
    System.Web.WebPages.Razor.WebRazorHostFactory.CreateHostFromConfig(String virtualPath, String physicalPath) +228 
    System.Web.WebPages.Razor.WebRazorHostFactory.CreateHostFromConfig(String virtualPath) +38 
    System.Web.WebPages.Razor.RazorBuildProvider.GetHostFromConfig() +51 
    System.Web.WebPages.Razor.RazorBuildProvider.CreateHost() +57 
    System.Web.WebPages.Razor.RazorBuildProvider.get_Host() +56 
    System.Web.WebPages.Razor.RazorBuildProvider.EnsureGeneratedCode() +77 
    System.Web.WebPages.Razor.RazorBuildProvider.get_CodeCompilerType() +54 
    System.Web.Compilation.BuildProvider.GetCompilerTypeFromBuildProvider(BuildProvider buildProvider) +59 
    System.Web.Compilation.BuildProvidersCompiler.ProcessBuildProviders() +209 
    System.Web.Compilation.BuildProvidersCompiler.PerformBuild() +30 
    System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath) +9881909 
    System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) +299 
    System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) +103 
    System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound) +165 
    System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp) +43 
    System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(String virtualPath, Type requiredBaseType) +28 
    System.Web.WebPages.BuildManagerWrapper.CreateInstanceOfType(String virtualPath) +343 
    System.Web.WebPages.VirtualPathFactoryExtensions.CreateInstance(IVirtualPathFactory factory, String virtualPath) +236 
    System.Web.WebPages.VirtualPathFactoryManager.CreateInstanceOfType(String virtualPath) +261 
    System.Web.WebPages.VirtualPathFactoryExtensions.CreateInstance(IVirtualPathFactory factory, String virtualPath) +132 
    System.Web.WebPages.WebPageHttpHandler.CreateFromVirtualPath(String virtualPath, IVirtualPathFactory virtualPathFactory) +58 
    System.Web.WebPages.WebPageHttpHandler.CreateFromVirtualPath(String virtualPath) +59 
    IS.TransactionDesk.SPA.Routing.DefaultRouteHandler.GetHttpHandler(RequestContext requestContext) in d:\Development\IS\IS\IS.TransactionDesk.SPA\Routing\DefaultRouteHandler.cs:42 
    System.Web.Routing.UrlRoutingModule.PostResolveRequestCache(HttpContextBase context) +9598252 
    System.Web.Routing.UrlRoutingModule.OnApplicationPostResolveRequestCache(Object sender, EventArgs e) +82 
    System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +136 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69 

ответ

1

Вы пробовали чистку решения, удаление временных файлов ASP.NET на

C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.xxxx \ Temporary ASP.NET Files

и перестройка?

+0

yep - много раз. – Darren

+1

И все ли все в вашем файле packages.config? В разделе времени выполнения вашей конфигурации вы можете попробовать добавить , чтобы изменить старую версию assemply на новую – Dan

+0

, добавить к которой dependAssembly ?- все «кажется» соответствует, хотя теперь все выглядит размытым - смотрел на него уже пару часов. – Darren

0

Я только что установил обновление 2 для Visual Studio 2013, и моя проблема исчезла.

8

Я работаю с VS 2013 Pro Update 2. Это то, что работает для меня:

  1. Закрыть Visual Studio
  2. Delete бин и OBJ папки
  3. Возобновить свое решение и восстановить
  4. Больше нет ошибок на представлении

BTW нет необходимости ничего менять в конфигурационных файлах и просто чистить и перестраивать решение не работает.

+0

работал как прелесть для меня. VS для Web 2013. – Faredoon

+0

Это работало для меня на VS 2012 PLUS, удаляя файлы ASP.NET Temp. – programad

+0

Я потратил 2 часа на эту штуку. наконец, удалены bin и obj и voila. решение построено и работает нормально. –

Смежные вопросы