7

Aplikacja ASP.NET MVC4 zawiera plik Helper.chtml w folderze App_Code zawierającym pomoce programu Razor. Po uaktualnieniu do edycji Visual Studio Communitity skompilować błądJak naprawić błąd Typ lub przestrzeń nazw "Linq" nie istnieje w przestrzeni nazw "System"

Error CS0234 The type or namespace name 'Linq' does not exist in the namespace 'System' (are you missing an assembly reference?) C:\Users\user\AppData\Local\Temp\Temporary ASP.NET Files\admin\e209c0e0\c74032ba\Sources_App_Code\helper.cshtml.72cecc2a.cs 16 

zacznie występować. Wygenerowany kod zawiera:

namespace ASP { 
    using System; 
    using System.Collections.Generic; 
    using System.IO; 
    using System.Linq; // Error occurs in this line 
    using System.Net; 
    using System.Web; 
    using System.Web.Helpers; 
    using System.Web.Security; 
    using System.Web.UI; 
    using System.Web.WebPages; 
    using System.Web.WebPages.Html; 

    #line 1 "C:\Web\Erp\App_Code\Helper.cshtml" 
    using System.Web.Mvc; 

    #line default 
    #line hidden 

    #line 2 "C:\Web\Erp\App_Code\Helper.cshtml" 
    using System.Threading; 

    #line default 
    #line hidden 

    #line 3 "C:\Web\Erp\App_Code\Helper.cshtml" 
    using MyApp.Business; 

    #line default 
    #line hidden 


    public class Helper : System.Web.WebPages.HelperPage { 

Błąd wskazuje na linię using System.Linq;.

Jak to naprawić? Przy użyciu ASP.NET4

Próbowałem dodać odniesienie do System.Core do projektu, ale dostałem błąd, że jest już odwołanie. web.confing zawiera

<compilation debug="true"> 
</compilation> 

Zmieniłem go

<compilation debug="true" targetFramework="4.0"> 
</compilation> 

według The type or namespace name 'Linq' does not exist in the namespace 'System' i https://social.msdn.microsoft.com/Forums/en-US/c970ea3d-5238-4ec7-8859-e16b40dccd3d/the-type-or-namespace-name-linq-does-not-exist-in-the-namespace-systemare-you-missing-an?forum=linqprojectgeneral

ale potem skompilować zmiany błędzie do

Error CS0234 The type or namespace name 'global_asax' does not exist in the namespace 'ASP' (are you missing an assembly reference?) 

co wskazuje na kod

protected static ASP.global_asax ApplicationInstance { 
     get { 
      return ((ASP.global_asax)(Context.ApplicationInstance)); 
     } 
    } 

w wygenerowanym pliku helper.cshtml.72cecc2a.cs.

Jak naprawić ten błąd?

Aktualizuj

Istotne części web.config to:

<?xml version="1.0" encoding="utf-8"?> 

<configuration> 
    <system.data> 
    <DbProviderFactories> 
     <clear /> 
     <add name="Npgsql Data Provider" invariant="Npgsql" support="FF" description=".Net Framework Data Provider for Postgresql Server" type="Npgsql.NpgsqlFactory, Npgsql" /> 
    </DbProviderFactories> 
    </system.data> 

    <system.web> 
    <httpModules> 
     <remove name="RoleManager" /> 
    </httpModules> 

    <compilation debug="true"> 
    </compilation> 

    <customErrors mode="Off" /> 
    <globalization uiCulture="auto" culture="auto" enableClientBasedCulture="true" /> 
    <pages> 
     <namespaces> 
     <add namespace="MYApp.Business" /> 
     <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.Routing" /> 
     <add namespace="System.Web.Optimization" /> 
     <add namespace="System.Web.WebPages" /> 
     </namespaces> 
    </pages> 
    </system.web> 

    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 
+0

Ponieważ już używasz ASP.Net V4, prawdopodobnie nie ma potrzeby stosowania rozdzielczości zaproponowanej w udostępnionym łączu. Spróbuj usunąć odniesienie do "System" i dodaj je ponownie. – Yogi

+0

Usunąłem i ponownie dodałem odniesienie do systemu, ale problem nadal występuje. – Andrus

+0

@Yogi Zaktualizowałem queston i dodaję główną zawartość web.config. Może to lub widoki/web.config można zmienić, aby to naprawić – Andrus

Odpowiedz

0

Spróbuj dodać nazw System.Linq w domyślnym sterownikiem.

+0

Co to jest kontroler domyślny? Aplikacja ma wspólną klasę podstawową dla kontrolerów, czy jest tam dodana? – Andrus

+0

to ten, który kontroluje Twoje działanie. Dla np. Domyślnie kontroler akcji kontroluje twoje logowanie i rejestrację akcji. –

+0

również sprawdź ten artykuł i komentarz, może to być pomocne. http://stackoverflow.com/a/22873162/5600402 Wygląda na to, że niektóre Twoje referencje nie zostały zaktualizowane podczas aktualizacji VS. –

Powiązane problemy