无法加载文件或程序集'Microsoft.CodeAnalysis,version = 1.3.1.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其中一个依赖项

Cap*_*ica 69 c# visual-studio-2015

昨晚发生了更新,现在我发现自己无法进行ctrl +'.' 对于VS 2015中的代码建议.出现错误消息,说明以下内容:

无法加载文件或程序集"Microsoft.CodeAnalysis,version = 1.3.1.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35"或其依赖项之一.该系统找不到指定的文件.

我仍然可以构建和开发,但如果没有此功能,这将非常烦人.我承认,我变软了!

有人建议修复这个bug吗?

Vil*_* H. 56

正如@CaptainAmerica所指出的,解决方案是从NuGet更新CodeDom程序集.应该指出如何在Visual Studio中执行此操作.我在这里找到了解决方案:

https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/

基本上,在Visual Studio菜单中选择:

Tools-> Nuget Package Manager -> Package Manager Console

在Visual Studio底部显示的控制台中运行以下命令:

Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Run Code Online (Sandbox Code Playgroud)

  • 这解决了这个问题,但我仍然不明白为什么我们需要添加这个包.直到今天,Ctrl +'.' 在我们的所有解决方案中都运行良好,我们没有在任何NuGet配置中列出此软件包.修复VS 2015安装也没有帮助. (11认同)

小智 28

我在Visual Studio 2015 Update 2中遇到了同样的问题,要为所有解决方案全局解决问题,请更新到Visual Studio 2015 Update 3.这是一个链接:从这里下载

  • 我正在改变这个答案的正确答案,因为我的原始答案只修复了当前的解决方案而不是我的任何其他解决方案.在我看来,这可以纠正这个问题,并且是大多数人在寻找这个bug的解决方案时想要的答案.谢谢shopOff! (2认同)

Dhr*_*har 25

如果任何选项不起作用,这里是处理此场景的详细指南....

首先,版本很重要.注意错误中提到的版本......

Could not load file or assembly 'Microsoft.CodeAnalysis, version= 1.3.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
Run Code Online (Sandbox Code Playgroud)

如果您看到上述错误,则表示无法找到版本1.3.1.现在请创建新的VS项目.没有偏好,它可以只是简单的控制台应用程序.现在,一旦项目模板准备就绪,请转到包管理器并使用指定的版本运行以下命令...

Install-Package Microsoft.CodeAnalysis -Version 1.3.1
Run Code Online (Sandbox Code Playgroud)

这将安装所有包.让它完成.一旦完成.我们根本不需要这个新创建的项目.您可以完全删除它.认真!你可以删除它.我们这样做是因为我们希望在全球nuget级别安装该软件包.当您安装某些东西时,nuget也会将其存储在您的机器的全局级别.路径将是这样的......

C:\Users\<<Your Windows User>>\.nuget\packages
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式了解您的路径......

%USERPROFILE%\.nuget\packages
Run Code Online (Sandbox Code Playgroud)

现在,您将在以下文件夹中看到所需的Microsoft.CodeAnalysis.dll ...

C:\Users\<<Your Windows User>>\.nuget\packages\Microsoft.CodeAnalysis.Common\1.3.1\lib\net45
Run Code Online (Sandbox Code Playgroud)

请注意,上面的路径包含版本号(1.3.1).如果您的版本不同,请查看该版本文件夹.

现在您已经拥有了dll,您需要做的就是将该dll添加到GAC.为此,您将需要GacUtil.exe

此文件已与Visual Studio一起安装.您可以在C盘中搜索"GacUtil".对我来说,它就在下面的路径......

C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools
Run Code Online (Sandbox Code Playgroud)

现在以管理员身份运行命令提示符,并将当前目录导航到包含GacUtil的路径.运行以下命令在GAC中安装该DLL.

gacutil
 -i C:\Users\<<You Windows User>>\.nuget\packages\Microsoft.CodeAnalysis.Common\1.3.1\lib\net45\Mi
crosoft.CodeAnalysis.dll
Run Code Online (Sandbox Code Playgroud)

基本上提供我们全球安装的DLL的路径.它将在成功安装时显示消息.

就这样!现在再次启动Visual Studio,您将解决此问题.

  • 这对我有用!其他答案似乎没有提到的一个考虑是在一个新项目中这样做.否则你会在解决方案和可能的源控制中添加大量垃圾. (3认同)
  • 顺便说一句,我还需要在 GAC 中安装 Microsoft.CodeAnalysis.CSharp.dll,以便 sonarqube 分析项目。 (2认同)

Cap*_*ica 11

我找到了这个页面,在页面底部的"与ASP.NET兼容"下,它说ASP.NET使用nuget包Microsoft.CodeDom.Providers.DotNetCompilerPlatform来更新Microsoft.CodeAnalysis程序集.所以我将DotNetCompilerPlatform软件包从1.0.0更新到1.0.3再次运行!是的,生活又好了!


Mar*_*llo 8

要解决所有解决方案的这个问题,我需要将程序集Microsoft.CodeAnalysis.dll直接安装到GAC - 全局程序集缓存.

我得到的文件Microsoft.CodeAnalysis.dllC:/用户/ [用户] /的NuGet /包/ Microsoft.CodeAnalysis.Common/1.3.2/LIB /便携式net45 + win8的/ Microsoft.CodeAnalysis.dll. .

要将程序集安装到GAC,我使用了https://github.com/LTruijens/powershell-gac中的PowerShell脚本.

最后,我设法使用PowerShell中的以下命令将程序集安装到GAC:

Add-GacAssembly [myPath]\Microsoft.CodeAnalysis.dll
Run Code Online (Sandbox Code Playgroud)


小智 5

我也面临同样的问题,尝试安装Microsoft.CodeAnalysis.CSharp nuget 包。如果未解决,请检查项目中Microsoft.Net.Compilers的版本,我的版本为 1.0.0,这导致了问题,因此将Microsoft.Net.Compilers nuget 更新为 v1.3.2。

在这里找到解决方案:Github 讨论

  • Microsoft.Net.Compilers 已弃用并已被 Microsoft.Net.Compilers.ToolSet 取代 (2认同)