Asp.net-Mvc

如何修復錯誤命名空間“System”中不存在類型或命名空間名稱“Linq”

  • December 13, 2020

ASP.NET MVC4 應用程序在包含 Razor 幫助程序的 App_Code 文件夾中包含 Helper.chtml 文件。升級到 Visual Studio 社區版後編譯錯誤

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

開始發生。生成的程式碼包含:

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 {

錯誤指向using System.Linq;行。

如何解決這個問題?使用 ASP.NET4

我試圖將 System.Core 的引用添加到項目中,但得到了它已被引用的錯誤。web.confing 包含

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

我把它改成

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

根據 命名空間“系統”和 https://social.msdn.microsoft.com/Forums/en-US/c970ea3d-5238-4ec7-8859-e16b40dccd3d/the-type中不存在類型或命名空間名稱“Linq” -or-namespace-name-linq-does-not-exist-in-the-namespace-systemare-you-missing-an?forum=linqprojectgeneral

但在那之後編譯錯誤更改為

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

指向程式碼

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

在生成的 helper.cshtml.72cecc2a.cs 文件中。

如何解決此錯誤?

更新

web.config 的相關部分是:

<?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>
     &lt;remove name="RoleManager" /&gt;
   &lt;/httpModules&gt;

   &lt;compilation debug="true"&gt;
   &lt;/compilation&gt;

   &lt;customErrors mode="Off" /&gt;
   &lt;globalization uiCulture="auto" culture="auto" enableClientBasedCulture="true" /&gt;
   &lt;pages&gt;
     &lt;namespaces&gt;
       &lt;add namespace="MYApp.Business" /&gt;
       &lt;add namespace="System.Web.Helpers" /&gt;
       &lt;add namespace="System.Web.Mvc" /&gt;
       &lt;add namespace="System.Web.Mvc.Ajax" /&gt;
       &lt;add namespace="System.Web.Mvc.Html" /&gt;
       &lt;add namespace="System.Web.Routing" /&gt;
       &lt;add namespace="System.Web.Optimization" /&gt;
       &lt;add namespace="System.Web.WebPages" /&gt;
     &lt;/namespaces&gt;
   &lt;/pages&gt;
 &lt;/system.web&gt;

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

嘗試在預設控制器中添加 System.Linq 命名空間。

引用自:https://stackoverflow.com/questions/32563183