首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >找不到路径的一部分...bin\roslyn\csc.exe

找不到路径的一部分...bin\roslyn\csc.exe
EN

Stack Overflow用户
提问于 2015-09-25 18:36:19
回答 57查看 600.9K关注 0票数 1.1K

我正在尝试运行从Asp.net源代码管理中检索到的TFS MVC项目。我已经添加了所有的程序集引用,我能够成功地构建和编译,而不会出现任何错误或警告。

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

无法找到路径'C:\B8akWorkspace\B8akProject\B8akSolution\B8AK.Portal\bin\roslyn\csc.exe'.的一部分

这是错误页面的完整屏幕截图。

经过几天的研究,我了解到Roslyn是一个提供高级编译功能的.Net编译器平台。然而,我不明白为什么我的构建试图找到\bin\roslyn\csc.exe,因为我没有配置任何与Roslyn相关的东西,也没有打算在我的项目中使用Roslyn。

EN

回答 57

Stack Overflow用户

回答已采纳

发布于 2015-09-25 18:44:18

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

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

代码语言:javascript
复制
<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>
票数 559
EN

Stack Overflow用户

发布于 2015-12-21 16:23:29

TL;DR

在Package Manager控制台中运行以下命令:

Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r

更多信息

此问题与Visual Studio本身无关,因此建议添加构建步骤以复制文件的答案是一种解决方法。与手动将编译器二进制文件添加到项目中相同。

Roslyn编译器来自一个NuGet包,在该包的某些版本中存在/曾经有一个bug (我不知道具体是哪个版本)。解决方案是重新安装/升级该软件包到一个没有bug的版本。最初,在2015年写答案之前,我通过在特定版本安装以下包来修复它:

  • Microsoft.Net.Compilers 1.1.1
  • Microsoft.CodeDom.Providers.DotNetCompilerPlatform 1.0.1

然后我查看了.csproj,并确保包的路径是正确的(在我的例子中是....\packages\*.*),在顶部的标记<ImportProject>中,在底部的<Target>中,名称为"EnsureNuGetPackageBuildImports“。这是在MVC5和.NET框架4.5.2上。

票数 1.6K
EN

Stack Overflow用户

发布于 2017-01-05 19:55:36

一个干净和重建的工作对我来说是有效的!

票数 211
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32780315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档