无法加载文件或程序集'Microsoft.CodeAnalysis,版本= 1.3.1.0,区域性=中性,PublicKeyToken = 31bf3856ad364e35'或其中之一


78

昨晚发生了更新,现在我发现自己无法执行ctrl +'。VS 2015中的代码建议。出现错误消息,内容如下:

无法加载文件或程序集'Microsoft.CodeAnalysis,版本= 1.3.1.0,区域性=中性,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。该系统找不到指定的文件。

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

有人建议修复此错误吗?


1
我今天也得到了...我希望我知道是什么原因造成的!我们的构建机器具有相同的VS / C#版本及其Ctrl +'。仍然可以正常工作。我们的任何项目的NuGet软件包中都没有DotNetCompilerPlatform,所以我不明白为什么突然需要安装它并更新所有项目的构建配置!
System.Cats.Lol

抱歉,不确定为什么会发生这种情况。我只是尝试将Microsoft.CodeDom.Providers.DotNetCompilerPlatform加载到该解决方案中最初没有的另一个项目中,该项目无法正常工作。
美国队长

2
正如Vilhelm H.在VS中指出的Tools-> Nuget Package Manager -> Package Manager Console,然后是Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Sven M.

Answers:


29

我在使用Visual Studio 2015 Update 2时遇到了相同的问题,以全局解决所有解决方案的问题,请更新到Visual Studio 2015 Update 3。这里是一个链接:从这里下载


2
我正在更改此答案的正确答案,因为我的原始答案仅解决了当前解决方案,而没有解决我的任何其他解决方案。在我看来,这可以纠正问题,并且是大多数人在寻找此bug的解决方案时想要的答案。谢谢shopOff!
美国队长

更新3 10/10修​​复。想知道何时引入?它突然开始在我身上发生。
AlbatrossCafe

1
它对我不起作用,而解决方案stackoverflow.com/a/42560044/581285解决了该问题。
Mauro Vanetti

61

正如@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

12
这解决了问题,但是我仍然不明白为什么我们需要添加此软件包。直到今天,按Ctrl +'。在我们所有的解决方案中都可以正常工作,并且我们没有在其任何NuGet配置中列出该软件包。修复VS 2015安装也没有帮助。
System.Cats.Lol

非常感谢!做到了。特别感谢您提供解决方案命令。为我省去了比绝对要求更多的阅读麻烦。;)
Sven M.

1
这也许行得通,也可能行不通,但是,要使Intellisense / CodeAnalysis在Visual Studio中运行,似乎每个人的解决方案都需要该NuGet包,这似乎是一个坏主意。更新到Update 3的作品。
Suamere

34

如果任何选项都不起作用,请参阅此处的详细指南以解决这种情况。

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

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.

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

Install-Package Microsoft.CodeAnalysis -Version 1.3.1

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

C:\Users\<<Your Windows User>>\.nuget\packages

您可以通过以下方式了解自己的道路...

%USERPROFILE%\.nuget\packages

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

C:\Users\<<Your Windows User>>\.nuget\packages\Microsoft.CodeAnalysis.Common\1.3.1\lib\net45

请注意,以上路径包含版本号(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

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

gacutil
 -i C:\Users\<<You Windows User>>\.nuget\packages\Microsoft.CodeAnalysis.Common\1.3.1\lib\net45\Mi
crosoft.CodeAnalysis.dll

基本上提供我们全局安装的dll的路径。成功安装后将显示消息。

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


3
这为我工作了!其他答案似乎未提及的一个考虑因素是在一个新项目中执行此操作。否则,您会在解决方案和可能的源代码管理中添加大量垃圾。
GilesDMiddleton

1
@GilesDMiddleton,是的,非常正确!这是很重要的一点,值得关注。Microsoft.CodeAnalysis实际上是一大堆依赖项,您不希望它们以任何方式安装在您的工作项目下。
Dhrumil Bhankhar

谢谢,那行得通。在我的情况下,必须安装2个dll,并且必须重新启动PC才能生效。
Ehsan Abidi

1
这是一个完美的解决方案。谢谢你,兄弟。我将从其他注释或问题Add-GacAssembly [myPath] \ Microsoft.CodeAnalysis.dll添加一行。如果尚未安装Gac,则在管理员模式下打开Powershell并键入Install-Module -Name Gac。运行此命令后,可以通过键入Add-Gac进行检查,并按Tab键,它应该完成命令,然后添加路径
Sahib Khan

2
顺便说一句,我还需要在GAC中安装Microsoft.CodeAnalysis.CSharp.dll,以便使用声纳法分析项目。
查理

11

我找到此页面,并且在页面底部“与ASP.NET的兼容性”下显示ASP.NET使用nuget包Microsoft.CodeDom.Providers.DotNetCompilerPlatform来更新Microsoft.CodeAnalysis程序集。因此,我将DotNetCompilerPlatform软件包从1.0.0更新到了1.0.3,它再次可以工作!是的,生活又美好了!


我有同样的问题。您能否解释一下如何更新Microsoft.CodeAnalysis程序集?
Marcello

@Marcello阅读下面的答案。在VS中:Tools-> Nuget Package Manager -> Package Manager Console然后Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Sven M.

好。我做到了,它解决了问题,但仅针对特定的解决方案。如果我打开另一个解决方案,问题仍然存在。
Marcello

9

为了解决所有解决方案的此问题,我需要将程序集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

1
好主意,尽管我没有尝试过。在更新到Update 3时,这可能会自动发生。但这是在Update 3与在每种解决方案中执行此操作之间的一个很好的中间解决方案。
Suamere

Add-GacAssembly的链接是文档的链接,而不是脚本的链接。有趣的是,链接的项目似乎没有包含任何实际的脚本。Google知道脚本的位置,但是它所做的只是显示有关脚本未进行数字签名的错误。
15ee8f99-57ff-4f92-890c-b56153'5

无论如何,对于那些一两天没有花时间与PowerShell进行战斗的人来说gacutil,VS Developer Command Prompt中都有。您可以使用它在GAC中安装上述组件。它没有为我解决问题。
15ee8f99-57ff-4f92-890c-b56153

@EdPlunkett,有关如何安装
Powershell


2

我已经通过这种方式解决了这个问题:

将Visual Studio 2015更新Update 3

从菜单中选择查看=>通知=> Visual Studio Update 3,然后单击更新按钮。


1

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

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


0

我通过将所有Nuget Microsoft依赖项更新到v2.0.0来解决此问题。这是使用VS2017。我使用的是预览版。


0

就我而言,该错误是在关闭Live Unit Testing并手动运行测试后发生的,某些测试将失败并显示上述错误消息。

进行测试->实时单元测试->选项并发出“删除持久数据”解决了该问题。


0

我通过删除解决方案内的.vs文件夹解决了类似问题。


0

我在NuGet程序包中找到了丢失的程序集(解决了第一个程序集之后,其他用户却很多了):https ://www.nuget.org/packages/Microsoft.Net.Compilers/1.3.1-rc

从开发者控制台使用GacUtil安装了它们。


0

不幸的是,上面的“ nuget install / gacutil”扩展解决方案无法使用,因为依赖dll的确切版本不可用。

以下解决了我们复杂的Webform应用程序中的问题,该问题是在Visual Studio->工具-> Nuget->控制台程序包管理器的解决方案中执行

Update-Package -reinstall 

0

就我而言,出现此错误的原因是我的Visual Studio解决方案试图TextTransform.exe在其中一个项目的预构建步骤中使用,但是我的本地计算机TextTransform.exe在预构建步骤指定的路径中没有我进行的首次修复是将它TextTransform.exe从其他位置复制到Visual Studio期望的位置。这似乎引起了此问题,因为TextTransform.exe还有其他静默依赖项。

我的解决方法是更改​​预构建步骤,而不是在以下位置查找文件

C:\Program Files (x86)\Common Files\microsoft shared\TextTemplating\14.0\TextTransform.exe

而是在Visual Studio安装文件夹中查找,该文件夹中有一堆其他文件,大概其中一个是 TextTransform.exe

C:\Program Files\Visual Studio\Common7\IDE\TextTransform.exe

那似乎为我解决了问题。


0

今天!我遇到了同样的问题,并通过重新启动Visual Studio 2015解决了这个问题:)


0

我遇到了同样的问题,我正在使用VS2017并安装了Microsoft.EntityFrameworkCore.SqlServer 3.1.8,而在VS2017 .Net核心版本中是2.1,因此我将Microsoft.EntityFrameworkCore.SqlServer降级为2.1.1并重新启动了解决方案。

警告不见了!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.