“Microsoft.CodeAnalysis.BuildTasks.Csc”任务无法从程序集中加载

23
我有一个项目存储在TFS在线上。当我试图构建该项目时,遇到以下错误:
严重性 代码 描述 项目 文件 行 错误 The "Microsoft.CodeAnalysis.BuildTasks.Csc" task could not be loaded from the assembly C:\Users\Bryan\Source\Workspaces\TestProject\ContosoUniversity\packages\Microsoft.Net.Compilers.1.0.0\build..\tools\Microsoft.Build.Tasks.CodeAnalysis.dll. Could not load file or assembly 'file:///C:\Users\Bryan\Source\Workspaces\TestProject\ContosoUniversity\packages\Microsoft.Net.Compilers.1.0.0\tools\Microsoft.Build.Tasks.CodeAnalysis.dll' or one of its dependencies. Could not find the file. Confirm that the declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. ContosoUniversity
这是否与Azure不支持ASP.NET 4.6有关?

你是否使用托管的构建服务器来构建项目?你尝试在本地机器上构建项目了吗?你能在本地成功构建吗?根据网站https://www.visualstudio.com/en-us/get-started/build/hosted-agent-pool上的“托管构建服务器上的软件”,托管构建服务器部署了.NET 4.6框架。 - Cece Dong - MSFT
8个回答

35

这是我的解决方法。使用Nuget Package Manager,如果引用了这两个软件包,请将其移除:

Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Microsoft.Net.Compilers

之后运行重建,这可以确保构建不尝试使用特定的构建exe。单击此处查看与先前版本的差异。


1
我的解决方案是一个混合环境(慢慢将我的项目迁移到新的csproj格式,但目前仍针对完整框架)。从我未迁移的项目中删除Microsoft.Net.Compilers包解决了构建问题。 - Brian Surowiec
谢谢,以下命令在包管理器控制台中也适用于我:Uninstall-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatformUninstall-Package Microsoft.Net.Compilers - MSTdev

11
不,这与Azure Web Apps不支持ASP.NET 4.6无关。实际上,您会收到此错误消息是因为NuGet包被检入版本控制。因此,您需要从TFS中删除文件夹TestProject \ ContosoUniversity \ packages并重新构建。参见:BuildTasks.Csc任务无法从程序集中加载?

8

我曾经遇到过同样的问题,解决方法如下:

  1. 确保您的软件包未受源代码控制
  2. 通过删除软件包文件夹来强制还原所有软件包
  3. 重新启动您的Visual Studio

它对我也起作用了。我尝试简单地在本地删除软件包并重建,但不起作用。按照上述步骤做就成功了。谢谢。 - Chinthaka
1
是的,需要重新启动。对我有用。谢谢! - Marek Stój
注意:重启VS非常重要。没有重启,问题无法解决。 - M. Jahedbozorgan

5
在我的情况下,通过将以下两个Nuget包更新到最新版本来解决了问题:
Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Microsoft.Net.Compilers

4
删除packages文件夹或其内容,进行清理和重新构建可以解决我的问题。

3
如果您查看参考文件,它会指向一个软件包位置。结果发现NuGet软件包已损坏。 解决方法:您只需要删除那个软件包文件夹(通常位于项目名称\项目名称\软件包下),然后构建,Nuget将还原所有所需的软件包。

0

我需要更新开发环境中的所有Nuget包,然后再次将项目检入到TFS中。

为了更加放心,我删除了Team City构建文件夹中的packages文件夹。


0

以防后来的某个人看到这个。

我只在 DevOps 中构建时遇到了这个问题。

但是,在手动删除本地构建中的软件包后,我开始在本地遇到相同的问题。 使用 NuGet 管理器删除明显缺失的 NuGets 后,问题在本地和 Azure 上都得到了解决。

不确定是什么原因导致的,但可能会在将来为某些人节省一些麻烦。

我正在使用 .net 4.7.2


重启VSS对我有用 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接