我正在尝试运行从Asp.net源代码管理中检索到的TFS MVC项目。我已经添加了所有的程序集引用,我能够成功地构建和编译,而不会出现任何错误或警告。
但我在浏览器中得到以下错误:
无法找到路径'C:\B8akWorkspace\B8akProject\B8akSolution\B8AK.Portal\bin\roslyn\csc.exe'.的一部分
这是错误页面的完整屏幕截图。
经过几天的研究,我了解到Roslyn是一个提供高级编译功能的.Net编译器平台。然而,我不明白为什么我的构建试图找到\bin\roslyn\csc.exe,因为我没有配置任何与Roslyn相关的东西,也没有打算在我的项目中使用Roslyn。
发布于 2015-09-25 18:44:18
默认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>
发布于 2015-12-21 16:23:29
TL;DR
在Package Manager控制台中运行以下命令:
Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r
更多信息
此问题与Visual Studio本身无关,因此建议添加构建步骤以复制文件的答案是一种解决方法。与手动将编译器二进制文件添加到项目中相同。
Roslyn编译器来自一个NuGet包,在该包的某些版本中存在/曾经有一个bug (我不知道具体是哪个版本)。解决方案是重新安装/升级该软件包到一个没有bug的版本。最初,在2015年写答案之前,我通过在特定版本安装以下包来修复它:
然后我查看了.csproj,并确保包的路径是正确的(在我的例子中是....\packages\*.*),在顶部的标记<ImportProject>
中,在底部的<Target>
中,名称为"EnsureNuGetPackageBuildImports“。这是在MVC5和.NET框架4.5.2上。
发布于 2017-01-05 19:55:36
一个干净和重建的工作对我来说是有效的!
https://stackoverflow.com/questions/32780315
复制相似问题