• NET VBCSCompiler.exe占用100%,造成项目卡顿的的解决方法


    1)服务器环境 最低配 的window server 2008 r2, 配置低容易发现问题‘

    2)事件描述 :项目打开缓慢,查询列表卡顿

    3)问题分析:排除代码问题,

           ->打开服务器任务管理器

           ->找到性能,发现cpu100%, 内存正常 

           ->找到进程

          ->按cpu使用率排序 发现是一个 VBCSCompiler.exe的进程使用的

          ->打开所在路径,发现正是我们项目的部署bin/roslyn目录下。

    4)他人解决方法:

             打开VBCSCompiler.exe.config文件编辑<add key="keepalive" value="600"/>将600改为6 但并不起效果,那么怎么办?

    5)我的解决方法:

         1)打开项目配置文件 web.config  找到下图位置,删除。

         2)修改项目中涉及的6.0语法全部改成5.0版本的语法

         2)发布->验证bin/roslyn/下没有VBCSCompiler.exe 为正确, 或直接删除服务器 roslyn文件夹及下所有文件

         3)运行 问题解决  

    6)解决思路:vs2015编译默认使用roslyn编译 也就是C#6.0,而以上截图的配置正是修改默认编译器的引用。

    以上内容转载自:https://www.cnblogs.com/songjl/p/7530133.html   感谢作者。

    我遇到的问题及解决方法:

    服务器是最低配 的window server 2016 ,代码版本 4.5.2 使用 VS2017 / VS2015 协作开发的Asp.net MVC网站,有 以下两个nuget包

    Microsoft.CodeDom.Providers.DotNetCompilerPlatform
    Microsoft.Net.Compilers

    打开服务器的内存管理器查看 每一次新的查询,VBCSCompiler.exe的进程一直在飙升,最高超过90%。

    解决方法:

    不修改任何代码,执行下述步骤。

    1.尝试了打开VBCSCompiler.exe.config文件编辑<add key="keepalive" value="600"/>将600改为6 但并不起效果。

    2.采用了 https://stackoverflow.com/questions/33319675/the-codedom-provider-type-microsoft-codedom-providers-dotnetcompilerplatform-cs 提到的方法:
    如果您的项目具有Roslyn参考,并且正在将其部署在IIS服务器上,则由于许多托管服务提供商仍未升级其服务器,因此不支持Roslyn,因此在网站上可能会出现不必要的错误。 若要解决此问题,您将需要从项目模板中删除Roslyn编译器。删除Roslyn不应影响代码的功能。对于我和其他我从事过的项目(C#4.5.2)来说,它工作正常。


    请执行以下步骤:


    1.使用下面显示的命令行从以下Nuget软件包中删除(或者您可以通过右键单击Root Project Solution并删除它们来使用Nuget软件包管理器的GUI)。

    PM> Uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
    PM> Uninstall-package Microsoft.Net.Compilers

    2.从Web.Config文件中删除以下代码,然后重新启动IIS。 (仅在第1步不能解决你的问题,请使用此方法。) 我没有用到这一步,卸载Nuget包会自动删除配置文件中的节点。

    <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=&quot;Web&quot; /optionInfer+" />
    </compilers>

    重新发布后
    bin下面没有roslyn的文件夹,问题解决。
  • 相关阅读:
    xml根据属性去重。如csprj去重
    table中td的内容换行。
    基于jq的表单填充
    c#包含类文件到csprj中
    t4 根据表名数组生成实体
    js中找string中重复项最多的字符个数
    一步步配置cordova android开发环境
    .net framework卸载工具
    Sql Server查询视图和表
    DbHelper.ttinclude 更新,查询视图和表
  • 原文地址:https://www.cnblogs.com/riddly/p/11867304.html
Copyright © 2020-2023  润新知