【问题标题】:Could not find file ... bin\roslyn\csc.exe [duplicate]找不到文件... bin\roslyn\csc.exe [重复]
【发布时间】:2020-01-28 22:36:36
【问题描述】:

在 Visual Studio 2017 中,当点击 Ctrl+F5 运行我的 ASP.NET Framework Web API 服务器,我得到:

找不到文件... bin\roslyn\csc.exe:

正在运行Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r 在包管理器控制台中不是永久修复,因为 缺少包文件时再次出现服务器错误。 我怎样才能一劳永逸地摆脱这个错误,以便需要的包 一旦我重新打开,构建,就会自动(并且静默)重新安装, 并运行我的 Visual Studio 解决方案?


重现错误的代码: http://henke.atwebpages.com/SrvrErr-reproduce.zipfile 1
(最初是从 https://github.com/aspnet/AspNetDocs/tree/master/aspnet/web-api/overview/advanced/calling-a-web-api-from-a-net-client/sample/server/ProductsApp)


1请将扩展名从zipfile重命名为zip

【问题讨论】:

    标签: c# .net visual-studio asp.net-web-api


    【解决方案1】:

    正如你已经提到的, 快速解决方法是使用包管理器, Tools > Nuget Package Manager > Package Manager Console,运行

    Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r
    

    正如所指出的 https://stackoverflow.com/questions/32780315#34391473

    但另一种解决方案(我认为它更健壮)是删除项目Web.config 文件的属性。 (Web.config 与您的 .csproj 文件位于同一目录中。)

    在文本编辑器(或在 Visual Studio 中)打开 Web.config 文件。
    - 在标签configuration | system.codedom | compilers | compiler language="c#;cs;csharp"中,彻底删除type属性。

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <!-- ... -->
      <system.codedom>
        <compilers>
          <compiler language="c#;cs;csharp" extension=".cs"
            type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
            warningLevel="4" compilerOptions="/langversion:default /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.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
            warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>
        </compilers>
      </system.codedom>
    </configuration>
    

    简而言之,删除以type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft开头的行。

    (大概相同的修复程序适用于 Visual Basic 和 Csharp,但我没有尝试过。)

    Visual Studio 将负责其余的工作。没有更多的Server Error in '/' Application

    在我在上面的 zip 文件中提供的示例代码中,您现在将获得 HTTP Error 403 当你按下 Ctrl+F5

    尝试将网络浏览器中的http://localhost:64195 替换为http://localhost:64195/api/products
    Web API 现在按应有的方式显示:

    出于挑衅,我什至尝试删除 Visual Studio 解决方案的整个 package 目录。
    一旦我(重新)构建它,它就会自动且无声地重新创建。

    【讨论】:

    • 请帮我理解,请在后面加上,它应该是什么样子。以及删除它的努力是什么
    • @Seabizkit,我只是重写了它,提供了更多细节。希望能帮助到你。如果没有,请在此处的另一条评论中告诉我。
    • 这个问题已经有一段时间了,这是最完整和最新的答案,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    • 2018-01-12
    • 2018-01-17
    • 2017-11-20
    • 1970-01-01
    相关资源
    最近更新 更多