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

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

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

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

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


当前回答

我在更新DotNetCompilerPlatform后也遇到了同样的问题。 通过重新启动Visual Studio >清理项目>构建项目解决。

其他回答

为了防止构建也将Roslyn文件复制到bin目录,您还必须注释掉位于Web应用程序项目顶部的这一行:

<!--  <Import Project="..\..\..\DAS\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\..\..\DAS\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" /> -->

安装nudget包:Microsoft.CodeDom.Providers.DotNetCompilerPlatform.BinFix https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.BinFix/1.0.0

在我的情况下,当我同时运行两个visual studio IDE时,我就遇到了这个问题。因此,解决方案是清理项目并关闭另一个实例。

在我的情况下,我注意到“构建”文件夹不在“packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0”路径中。这就是为什么没有创建roslyn文件夹的原因。

所以我的解决方案是:

清洁解决方案 进入Nuget包管理器 卸载Microsoft.CodeDom.Providers.DotNetCompilerPlatform 清洁解决方案 从Nuget包管理器中重新安装Microsoft.CodeDom.Providers.DotNetCompilerPlatform。 清洁/重建

好了。以上的解决方案对我都不起作用。希望这对大家有所帮助

我在发布管道中遇到了这个问题(它产生了一个_PublishedWebsites目录),并将其用作项目中的目标:

<Target Name="CopyRoslynCompilerFilesToPublishedWebsitesDirectory" AfterTargets="AfterBuild" Condition="Exists('$(OutDir)\_PublishedWebsites\$(TargetName)')">
    <Copy SourceFiles="@(RoslyCompilerFiles)" DestinationFolder="$(OutDir)\_PublishedWebsites\$(TargetName)\bin\roslyn" ContinueOnError="true" SkipUnchangedFiles="true" />
</Target>

缺点是输出中将有两个Roslyn文件的副本。