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

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

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

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

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


当前回答

为了防止构建也将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')" /> -->

其他回答

除了从解决方案中的所有项目中删除Bin目录外,还需要删除obj文件夹。

在主解决方案目录中删除.vs文件夹

当我试图把一个已经完成的项目变成一个在git上创建的空白解决方案时,为我工作了。

右键单击项目并选择Manage Nuget Packages 找到“Microsoft.CodeDom.Providers.DotNetCompilerPlatform” 简单地更新到旧版本或新版本(无所谓哪个),然后再次更新回原始版本。

这将重新安装包的所有依赖项和文件(如csc.exe)。

默认的VS2015模板的问题是编译器实际上没有复制到tfr\bin\roslyn\目录中,而是复制到{outdir}\roslyn\目录中

在.csproj文件中添加以下代码:

<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>

下面为我解决了这个问题:

更新到Visual Studio 2017的最新版本(使用安装程序应用程序) 清理并重新构建解决方案

我按照这些步骤做了,效果非常好

删除所有bin和obj文件夹 清洁解决方案和重建 在powershell中执行该命令

更新- package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r