我正在尝试运行ASP。NET MVC(模型-视图-控制器)项目从TFS (Team Foundation Server)源代码控制检索。我已经添加了所有程序集引用,我能够成功地构建和编译,没有任何错误或警告。

但是我在浏览器中得到以下错误:

找不到路径的一部分 “C: \ B8akWorkspace \ B8akProject \ B8akSolution \ B8AK.Portal \ bin \ roslyn \ csc.exe”。

以下是错误页面的完整截图。

经过几天的研究,我了解到Roslyn是一个提供高级编译特性的. net编译器平台。但是,我不明白为什么我的构建试图找到\bin\roslyn\csc.exe,因为我没有配置任何与roslyn相关的东西。我也没打算让罗斯林参与我的项目。


当前回答

正如GitHub上Roslyn项目的一个问题所指出的那样,一个解决方案(对我有用)是简单地在Visual Studio中卸载和重新加载项目。

“bin\roslyn”文件夹没有在构建或重新构建时创建,直到我重新加载项目。

其他回答

你需要安装Microsoft.CodeDom.Providers.DotNetCompilerPlatform.BinFix, 是专门为这个错误创建的吗

我在服务器上安装应用程序时遇到了同样的问题,而在localhost上一切都很完美。

这些解决方案都不奏效,我总是犯同样的错误:

Could not find a part of the path 'C:\inetpub\wwwroot\myApp\bin\roslyn\csc.exe'

我最后是这样做的:

在我的安装项目中,右clic,查看>文件系统 创建一个bin/roslyn文件夹 选择添加>文件,并添加包\Microsoft.Net.Compilers.1.3.2\tools中的所有文件

这解决了我的问题。

我不得不改变WebAPI和MVC项目文件,不构建视图:

<MvcBuildViews>false</MvcBuildViews>

这解决了我的TFS 2015构建服务器错误与罗斯林。仍然不确定为什么csc.exe被复制到\bin\csc.exe,但发布进程正在寻找\bin\Roslyn\csc.exe…找不到导致这种差异的变换。

对于VS 2019,完全删除以下节点:

<system.codedom>
</system.codedom>

我在部署到的服务器上遇到了这个问题,并确定不需要

Microsoft.CodeDom.Providers.DotNetCompilerPlatform

所以,我通过nuget卸载了它,并删除了web配置中的引用。没有问题了。

我最初试图添加目标节点到.proj文件中提到的一些其他答案,但这只是导致另一个错误,msbuild无法复制页面文件。从我读到的内容来看,这似乎是一个漏洞。