我正在尝试运行ASP。NET MVC(模型-视图-控制器)项目从TFS (Team Foundation Server)源代码控制检索。我已经添加了所有程序集引用,我能够成功地构建和编译,没有任何错误或警告。
但是我在浏览器中得到以下错误:
找不到路径的一部分
“C: \ B8akWorkspace \ B8akProject \ B8akSolution \ B8AK.Portal \ bin \ roslyn \ csc.exe”。
以下是错误页面的完整截图。
经过几天的研究,我了解到Roslyn是一个提供高级编译特性的. net编译器平台。但是,我不明白为什么我的构建试图找到\bin\roslyn\csc.exe,因为我没有配置任何与roslyn相关的东西。我也没打算让罗斯林参与我的项目。
我尝试了多个顶级答案,直到下面的步骤起作用(ASP。NET项目,目标是。NET Framework 4.6.2, Visual Studio 2019,在一个具有疯狂限制性组策略的系统上,2021年3月)。
我需要:
以管理员身份运行VS
在包管理器控制台运行
更新- package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -v 2.0.1
清洁和重建解决方案
如果不以Admin身份运行VS,组策略会阻塞Update-Package需要运行的ps1脚本。
PS.在此工作之前,我尝试了许多其他答案(并在他们失败后运行git reset)。我不知道他们中是否有人最终促成了这一切。我试着:
https://stackoverflow.com/a/32780433/4658148
https://stackoverflow.com/a/34391473/4658148
https://stackoverflow.com/a/41484473/4658148
https://stackoverflow.com/a/62136000/4658148
https://stackoverflow.com/a/54341249/4658148
https://stackoverflow.com/a/51308385/4658148
在我的例子中,类似于Basim,有一个NuGet包告诉编译器我们需要c# 6,而我们并不需要。
我们必须删除NuGet包Microsoft.CodeDom.Providers.DotNetCompilerPlatform,然后删除:
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform"
version="1.0.0" targetFramework="net452" /> from the
packages.config file
<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=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>
在系统中。codedom节点,你可以看到为什么它带来roslyn: compilerOptions="/langversion:6