运行带有
-log
参数的ssms会显示错误消息:包[任务计划程序包]的CreateInstance失败源:
'mscorlib'描述:无法加载文件或程序集
'Microsoft.VisualStudio.Shell.Interop.8.0,版本= 15.0.0.0,
文化=中性,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自HRESULT的异常:0x80131040)
System.IO.FileLoadException:无法加载文件或程序集
'Microsoft.VisualStudio.Shell.Interop.8.0,版本= 15.0.0.0,
Culture =中性,PublicKeyToken = b03f5f7f11d50a3a'或其
依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自HRESULT的异常:0x80131040)
文件名:'Microsoft.VisualStudio.Shell.Interop.8.0,
版本= 15.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'
--- > System.IO.FileLoadException:无法加载文件或程序集“ Microsoft.VisualStudio.Shell.Interop.8.0,版本= 8.0.0.0,
文化=中性,PublicKeyToken = b03f5f7f11d50a3a”或其中之一
依赖性。找到的程序集的清单定义与程序集引用不匹配。 (来自HRESULT的异常:0x80131040)
文件名:'Microsoft.VisualStudio.Shell.Interop.8.0,Version = 8.0.0.0,
文化=中性,PublicKeyToken = b03f5f7f11d50a3a'
WRN:装订绑定日志记录已关闭。要启用程序集绑定
故障日志记录,请将注册表值
[HKLM \ Software \ Microsoft \ Fusion!EnableLog](DWORD)设置为1。注意:与程序集相关的性能损失会有所减少。绑定失败
记录。若要关闭此功能,请删除注册表值
[HKLM \ Software \ Microsoft \ Fusion!EnableLog]。
System.Reflection.RuntimeAssembly.GetType(RuntimeAssembly
程序集,在
System.Reflection.RuntimeAssembly.GetType处的字符串名称,布尔型throwOnError,布尔值ignoreCase,
ObjectHandleOnStack类型)(在
System.Activator上的字符串名称,布尔值
throwOnError,布尔值ignoreCase) .CreateInstance(String assemblyString,String
typeName,布尔ignoreCase,BindingFlags bindingAttr,活页夹装订器,
Object [] args,CultureInfo文化,Object [] activationAttributes,
证据securityInfo,StackCrawlMark&stackMark)
System.Activator.CreateInstance(字符串assemblyName,字符串typeName)
位于System.AppDomain.CreateInstance(字符串assemblyName,字符串
typeName)
System.IO.FileLoadException :无法加载文件或程序集
'Microsoft.VisualStudio.Shell.Interop.8.0,版本= 8.0.0.0, Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其
依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自HRESULT的异常:0x80131040)
文件名:'Microsoft.VisualStudio.Shell.Interop.8.0,Version = 8.0.0.0,
文化=中性,PublicKeyToken = b03f5f7f11d50a3a'
WRN:装订绑定日志记录已关闭。要启用程序集绑定
故障日志记录,请将注册表值
[HKLM \ Software \ Microsoft \ Fusion!EnableLog](DWORD)设置为1。注意:与程序集相关的性能损失会有所减少。绑定失败
日志记录。要关闭此功能,请删除注册表值
[HKLM \ Software \ Microsoft \ Fusion!EnableLog]。
我尝试在SSMS上运行“修复”,并尝试了修复
C:\ProgramData\Package Cache\{AAA9F15B-AF45-4562-9991-93A848D3A902}v15.0.28307.421\redist\vs2017_isoshell_for_ssms.msi
,但问题仍然存在。#1 楼
我只是用来自C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PublicAssemblies
的副本覆盖了..\PrivateAssemblies\Interop
中的Microsoft.VisualStudio.Shell.Interop.8.0.dll,并打开了IDE。 (感谢米奇(Mitch)发现了令人讨厌的DLL名称。)今天看起来像是一个受欢迎的问答,所以我很高兴知道这不仅是我。
评论
对我而言,还有一个要复制到的Microsoft.VisualStudio.Shell.Interop.8.0文件夹。
–安德兹
19年5月24日在12:08
像魅力和救生员一样工作。谢谢。
–HartleySan
19年6月17日在16:52
为我工作。从\ PrivateAssemblies复制到\ PublicAssemblies。
–Hairgami_Master
19年6月19日在19:43
可爱!!谢谢。
– Mihai Bjn
12月10日17:31
#2 楼
根据Ronan Ariely的建议,已经发布了一种官方解决方案,建议从ssms.exe.config
中删除一行。在
C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Ssms.exe.config
中: <?xml version="1.0" encoding="utf-8"?>
<configuration>
<!-- ...snip... -->
<runtime>
<!-- ...snip... -->
<!-- Remove this line (~line 38) -->
<NgenBind_OptimizeNonGac enabled="1" />
<!-- ...snip... -->
</runtime>
<!-- ...snip... -->
</configuration>
如果运行了先前的将程序集添加到GAC的解决方案,则可能应通过运行以下命令将其卸载:
gacutil /u Microsoft.VisualStudio.Shell.Interop.8.0,Version=15.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a
评论
gacutil的任何版本都可以。或者,如果未安装SDK版本,则可以使用powershell。
–米奇
19年5月12日,0:56
为此,请喜欢StackExchange。完全为我工作。
–马特忍者
19年6月13日在7:53
很好..这对我有用
–贾廷·加迪亚(Jatin Gadhiya)
19年6月16日在8:10
你怎么知道的,伙计???谢谢!
– DmitryBoyko
19年7月23日在3:55
#3 楼
这是一个已知问题,SSMS开发人员团队发布了新的官方变通办法。您可以在以下链接中的Microsoft反馈系统中查看公开票证:
https:// feedback .azure.com / forums / 908035-sql-server / suggestions / 37502512-ssms2018-installed-but-will-not-run
短历史记录:
第一个解决方法出现的目的是将文件:
Microsoft.VisualStudio.Shell.Interop.8.0.dll
从目录:
C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PrivateAssemblies\Interop
复制到目录:
C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PublicAssemblies
以后,更集中的解决方案已发布(这是我所使用的):只需删除文件
C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Platform\Microsoft.VisualStudio.MinShell.Interop.pkgdef
,无论如何,几天前,团队发布了更新,如您在上面的链接中所见。这是来自官方最新更新的引文:临时建议的解决方法是:
1)关闭所有SSMS实例
2)编辑ssms.exe.config
3)删除包含以下文本的行(应为第38行):
NgenBind_OptimizeNonGac enabled =“ 1”
这与下一版SSMS 18.x中的更改相同。
注意! ssms.exe.config文件的位置在以下文件夹中:
C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE
评论
这应该是已批准的解决方法。
–欧姆齐
19年7月19日在14:48
您应该使用@Omzig,但是由于某种原因,它甚至没有获得最多的投票数😃
–罗恩·阿里(Ronen Ariely)
19年7月20日在17:12
正确的解决方法.. !!坦伴侣,这解决了这个问题。
– Mohamed Ayas
19年8月1日在7:29
不客气@MohamedAyas😃
–罗恩·阿里(Ronen Ariely)
19年8月2日在17:46
我有SQL Management Studio 2014,但没有这样的文件夹。 ssms.exe.config位于C:\ Program Files(x86)\ Microsoft SQL Server \ 120 \ Tools \ Binn \ ManagementStudio ...下,其内容与此处提到的无关。有什么帮助吗?
–jstuardo
19年8月28日在18:56
#4 楼
我刚刚在带有SQL Server 2017和SSMS 18.0的新构建的Server 2016上遇到了相同的问题,但是在2次重新启动后消失了,在此期间服务器已使用2019年3月的O / S修补程序进行了完全修补。我将尝试进行更多测试,以确定是否确实有O / S补丁对此有所帮助,但与此同时,我没有意识到在该服务器上还安装了其他任何产品。似乎更多重新启动后是随机的,但是我现在注意到的是SSMS在安装后就可以正常工作,但是我组织中的SCCM开始安装各种东西,SSMS停止工作。现在嫌疑犯是“ .NET Framework 3.5 Server Feature 2016”。
#5 楼
我遇到了同样的问题,并且在搜索了一段时间后发现了解决此问题的以下分步指南:SSMS:如何修复SQL Server Management Studio未解决问题
提供的解决方案是:复制PrivateAssemblies \ Interop \ Microsoft.VisualStudio.Shell.Interop.8.0.dll文件(程序集版本15.0.0.0)放入PublicAssemblies文件夹。
步骤如下:
首先,作为预防措施,作者重命名为将现有的
PublicAssemblies\Microsoft.VisualStudio.Shell.Interop.8.0.dll
替换为其他文件,以防万一我以后需要该文件。然后他将
Microsoft.VisualStudio.Shell.Interop.8.0.dll
的文件从PrivateAssemblies\Interop
复制到PublicAssemblies
文件夹中。任何问题。#6 楼
这个问题还有另一种解决方案。关于Azure反馈项目SQL Server Management Studio 18 GA(15.0.18118.0)与.NET Framework 4.8不兼容,Erich Signer建议:步骤1:
C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Platform\Microsoft.VisualStudio.MinShell.Interop.pkgdef
重命名并进行确保此文件不再具有
.pkgdef
扩展名。或删除文件。步骤2:
删除以下注册表项(使用上面提到的“ .pkgdef”文件在SSMS 18启动时创建):
HKEY_CURRENT_USER\SOFTWARE\Microsoft\SQL Server Management Studio.0_IsoShell_Config\RuntimeConfiguration\dependentAssembly\bindingRedirection\{8BC7AF31-B6DA-4B97-8B36-F0500DECB147}
基于omzig最初留下的评论
评论
通过添加-log参数来生成日志文件。例如:“ C:\ Program Files(x86)\ Microsoft SQL Server Management Studio 18 \ Common7 \ IDE \ Ssms.exe” -log C:\ drop \ log.txt您也可以从C:\ Users(用户)\ AppData \ Roaming \ Microsoft \ AppEnv \ 15.0 \ ActivityLog.xml中获取日志,而无需使用-log开关