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

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

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

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

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


当前回答

默认的VS2015模板的问题是编译器实际上没有复制到{outdir}_PublishedWebsites\tfr\bin\roslyn\目录中,而是复制到{outdir}\roslyn\目录中。这可能与您的本地环境不同,因为AppHarbor使用输出目录构建应用程序,而不是“就地”构建解决方案。

要修复它,在xml块<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">

<PropertyGroup>
  <PostBuildEvent>
    if not exist "$(WebProjectOutputDir)\bin\Roslyn" md "$(WebProjectOutputDir)\bin\Roslyn"
    start /MIN xcopy /s /y /R "$(OutDir)roslyn\*.*" "$(WebProjectOutputDir)\bin\Roslyn"
  </PostBuildEvent>
</PropertyGroup>

参考:https://support.appharbor.com/discussions/problems/78633 -斜面-构建- aspnet - mvc项目生成——从vstudio - 2015企业

其他回答

这里有一个更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目录中(而不是在文件夹中)。不过,这款应用似乎还能用。

在我的情况下,只要删除bin文件夹内的所有内容并重新编译就可以为我完成所有工作。

以我为例,在尝试任何其他解决方案之前,我切换到“发布”配置,重新创建(文件夹被创建),然后切换回“调试”,而文件夹保持不变。

这是从旧解决方案的源代码控制中签出的,显然原始(自动)包恢复和构建项目并没有在bin目录中创建该文件夹。

注意,在撰写本文时,被指责的组件已经达到v.2。

删除解决方案资源管理器中的Bin文件夹并重新生成解决方案。这样问题就解决了

我尝试了多个顶级答案,直到下面的步骤起作用(ASP。NET项目,目标是。NET Framework 4.6.2, Visual Studio 2019,在一个具有疯狂限制性组策略的系统上,2021年3月)。

我需要:

以管理员身份运行VS 在包管理器控制台运行 更新- package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -v 2.0.1 清洁和重建解决方案

如果不以Admin身份运行VS,组策略会阻塞Update-Package需要运行的ps1脚本。

PS.在此工作之前,我尝试了许多其他答案(并在他们失败后运行git reset)。我不知道他们中是否有人最终促成了这一切。我试着:

https://stackoverflow.com/a/32780433/4658148 https://stackoverflow.com/a/34391473/4658148 https://stackoverflow.com/a/41484473/4658148 https://stackoverflow.com/a/62136000/4658148 https://stackoverflow.com/a/54341249/4658148 https://stackoverflow.com/a/51308385/4658148