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

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

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

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

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


当前回答

我在发布管道中遇到了这个问题(它产生了一个_PublishedWebsites目录),并将其用作项目中的目标:

<Target Name="CopyRoslynCompilerFilesToPublishedWebsitesDirectory" AfterTargets="AfterBuild" Condition="Exists('$(OutDir)\_PublishedWebsites\$(TargetName)')">
    <Copy SourceFiles="@(RoslyCompilerFiles)" DestinationFolder="$(OutDir)\_PublishedWebsites\$(TargetName)\bin\roslyn" ContinueOnError="true" SkipUnchangedFiles="true" />
</Target>

缺点是输出中将有两个Roslyn文件的副本。

其他回答

我尝试了多个顶级答案,直到下面的步骤起作用(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

在我的情况下,我们的团队不想保留“包”文件夹,所以我们把所有的dll放在其他目录,如“sharedlib”。

我使用构建事件来解决这个问题。

if "$(ConfigurationName)" == "Release" (
goto :release
) else (
goto:exit
)

:release
if not exist $(TargetDir)\roslyn mkdir $(TargetDir)\roslyn

copy /Y "$(ProjectDir)..\..\Shared Lib\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\tools\Roslyn45\*" "$(TargetDir)\roslyn"
goto :exit

:exit

打开项目文件,用Import project ="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0....删除所有引用

开放网络。配置并删除所有系统。代码dom编译器属性

我在部署到的服务器上遇到了这个问题,并确定不需要

Microsoft.CodeDom.Providers.DotNetCompilerPlatform

所以,我通过nuget卸载了它,并删除了web配置中的引用。没有问题了。

我最初试图添加目标节点到.proj文件中提到的一些其他答案,但这只是导致另一个错误,msbuild无法复制页面文件。从我读到的内容来看,这似乎是一个漏洞。

我在运行项目时也遇到了同样的问题。以下是我所遵循的步骤。

右击溶液 选择清洁溶液 清理成功后,再次构建您的项目 再次运行项目

这次我没有看到同样的错误。这与预期的一样。