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

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

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

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

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


当前回答

更新nuget包对我来说很有用 右键单击解决方案>管理NuGet包的解决方案 并更新所有的包,特别是: Microsoft.Net.Compilers 和Microsoft.CodeDom.Providers.DotNetCompilerPlatform

其他回答

在我的例子中,我只需要转到Visual Studio Solution Explorer (web应用程序项目)中的bin目录,并直接包括roslyn项目。右键单击文件夹并选择“包含在项目中”。并再次检入解决方案以触发构建过程。

默认情况下不包括roslyn文件夹。

要做到这一点,可以采用以下简单的方法:

在系统的任何地方创建一个类似类型的新项目。构建它并将roslyn文件夹复制到bin目录。

这里有一个更MSBuild的方法。

<Target Name="CopyRoslynFiles" AfterTargets="AfterBuild" Condition="!$(Disable_CopyWebApplication) And '$(OutDir)' != '$(OutputPath)'">
    <ItemGroup>
      <RoslynFiles Include="$(CscToolPath)\*" />
    </ItemGroup>
    <MakeDir Directories="$(WebProjectOutputDir)\bin\roslyn" />
    <Copy SourceFiles="@(RoslynFiles)" DestinationFolder="$(WebProjectOutputDir)\bin\roslyn" SkipUnchangedFiles="true" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" />
</Target>

但是我注意到roslyn文件也在我的bin目录中(而不是在文件夹中)。不过,这款应用似乎还能用。

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

在尝试了所有没有雪茄的修复后,我在Visual Studios中更新了这个Nuget包:

Microsoft.CodeDom.Providers.DotNetCompilerPlatform

我的是从1.0.0到2.0.0供参考(错误不再显示)