MrJul / ReSharper.EnhancedTooltip

A plugin for JetBrains Resharper that colorizes the tooltip and parameter information.
Apache License 2.0
172 stars 27 forks source link

Installation errors (VS 2017 RTM/R# 2017.1 EAP 4) #102

Closed stackalloc closed 1 year ago

stackalloc commented 7 years ago

image

Error resolving type Microsoft.VisualStudio.Text.ITextBuffer from assembly “Microsoft.VisualStudio.Text.Data, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”, request originating from assembly “GammaJul.ReSharper.EnhancedTooltip, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null”. Could not find a referenced assembly by the TT_ASSEMBLYREF token.
Error resolving type Microsoft.VisualStudio.Editor.IVsEditorAdaptersFactoryService from assembly “Microsoft.VisualStudio.Editor, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”, request originating from assembly “GammaJul.ReSharper.EnhancedTooltip, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null”. Could not find a referenced assembly by the TT_ASSEMBLYREF token.
Error resolving type Microsoft.VisualStudio.Text.Classification.IClassificationFormatMapService from assembly “Microsoft.VisualStudio.Text.UI.Wpf, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”, request originating from assembly “GammaJul.ReSharper.EnhancedTooltip, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null”. Could not find a referenced assembly by the TT_ASSEMBLYREF token.
Error resolving type Microsoft.VisualStudio.Text.Classification.IEditorFormatMapService from assembly “Microsoft.VisualStudio.Text.UI.Wpf, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”, request originating from assembly “GammaJul.ReSharper.EnhancedTooltip, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null”. Could not find a referenced assembly by the TT_ASSEMBLYREF token.
Error resolving type Microsoft.VisualStudio.Text.Classification.IClassificationFormatMap from assembly “Microsoft.VisualStudio.Text.UI.Wpf, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”, request originating from assembly “GammaJul.ReSharper.EnhancedTooltip, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null”. Could not find a referenced assembly by the TT_ASSEMBLYREF token.
Error resolving type Microsoft.VisualStudio.Text.Classification.IClassificationFormatMap from assembly “Microsoft.VisualStudio.Text.UI.Wpf, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”, request originating from assembly “GammaJul.ReSharper.EnhancedTooltip, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null”. Could not find a referenced assembly by the TT_ASSEMBLYREF token.
Error resolving type Microsoft.VisualStudio.Text.Classification.IClassificationFormatMapService from assembly “Microsoft.VisualStudio.Text.UI.Wpf, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”, request originating from assembly “GammaJul.ReSharper.EnhancedTooltip, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null”. Could not find a referenced assembly by the TT_ASSEMBLYREF token.
Error resolving type Microsoft.VisualStudio.Text.Classification.IClassificationTypeRegistryService from assembly “Microsoft.VisualStudio.Text.Logic, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”, request originating from assembly “GammaJul.ReSharper.EnhancedTooltip, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null”. Could not find a referenced assembly by the TT_ASSEMBLYREF token.
Error resolving type Microsoft.VisualStudio.Text.Classification.IClassificationFormatMapService from assembly “Microsoft.VisualStudio.Text.UI.Wpf, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”, request originating from assembly “GammaJul.ReSharper.EnhancedTooltip, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null”. Could not find a referenced assembly by the TT_ASSEMBLYREF token.
Error resolving type Microsoft.VisualStudio.Text.Classification.IClassificationTypeRegistryService from assembly “Microsoft.VisualStudio.Text.Logic, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”, request originating from assembly “GammaJul.ReSharper.EnhancedTooltip, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null”. Could not find a referenced assembly by the TT_ASSEMBLYREF token.

InstallerLog2017-03-10T17-28-09.txt

MrJul commented 7 years ago

Is the plugin running correctly even after these errors? I (obviously) don't have any problems on my machine.

stackalloc commented 7 years ago

@MrJul yes, it runs and works correctly.

MrJul commented 7 years ago

@citizenmatt @derigel23 Sorry to summon you, but I'm a little lost here, those exact VS assemblies were already referenced in older versions of Enhanced Tooltip. I'm aware that the v11 assemblies (VS2012) may not exist, but VS has binding redirects for all of these and this has never been a reported problem before VS2017. Also note that R# itself references the v10 ones without issues.

1) Are there some flags to set somewhere to make the installer happy? It's only an installer problem since the plugin runs fine afterwards. 2) Should I reference the v10 assemblies instead? I can't easily test that this solves the issue at the moment (this probably needs a clean machine with only VS2017 to reproduce, which I'll set up later if needed).

derigel23 commented 7 years ago

@MrJul it's logged in youtrack. Please, follow there.

dmitrykm commented 7 years ago

I had the same installation error as in the screenshot (R# 2017.1 EAP4, VS 2017). After restarting VS after the installation, there is an error message box saying something similar:

---------------------------
ReSharper – Runtime Error – Technical Data
---------------------------
JetBrains ReSharper has encountered a runtime error.
Technical data follows.
Hint: Ctrl+C copies the text of system message boxes to Clipboard.
________________________________________________________________

Error resolving type Microsoft.VisualStudio.Text.ITextBuffer from assembly “Microsoft.VisualStudio.Text.Data, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”, request originating from assembly “GammaJul.ReSharper.EnhancedTooltip, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null”. Could not find a referenced assembly by the TT_ASSEMBLYREF token.

--- EXCEPTION #1/2 [TypeLoadException]

Message = “Error resolving type Microsoft.VisualStudio.Text.ITextBuffer from assembly “Microsoft.VisualStudio.Text.Data, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”, request originating from assembly “GammaJul.ReSharper.EnhancedTooltip, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null”. Could not find a referenced assembly by the TT_ASSEMBLYREF token.”

ExceptionPath = Root.InnerException

ClassName = System.TypeLoadException

HResult = COR_E_TYPELOAD=80131522

TypeLoadResourceID = 0

--- Outer ---

--- EXCEPTION #2/2 [LoggerException]

Message = “Error resolving type Microsoft.VisualStudio.Text.ITextBuffer from assembly “Microsoft.VisualStudio.Text.Data, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”, request originating from assembly “GammaJul.ReSharper.EnhancedTooltip, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null”. Could not find a referenced assembly by the TT_ASSEMBLYREF token.”

ExceptionPath = Root

ClassName = JetBrains.Util.LoggerException

Data.ManagedThreadName = <NULL>

InnerException = “Exception #1 at Root.InnerException”

HResult = COR_E_APPLICATION=80131600

StackTraceString = “

  at JetBrains.Util.OnError.<>c__DisplayClass13.<LogForeignException>b__12(Exception ex)

     at JetBrains.Util.OnError.Handle(Exception ex)

     at JetBrains.Application.Bindings.AssemblyBinderExtensions.<>c__DisplayClass8.<CreateMetadataLoader>b__5(UnresolvedTypeArgs args)

     at JetBrains.DataFlow.Signal`1.NotifySinks(TValue payload)

     at JetBrains.DataFlow.Signal`1.Fire(TValue value, Object cookie)

     at JetBrains.DataFlow.Signal`1.Fire(TValue value)

     at JetBrains.Metadata.Reader.Impl.MetadataAssembly.GetTypeInfoFromToken(MetadataToken token)

     at JetBrains.Metadata.Reader.Impl.MetadataAssembly.GetTypeFromToken(MetadataToken token, TypeDecodeContext context)

     at JetBrains.Metadata.Reader.Impl.MetadataAssembly.GetTypeFromToken(MetadataToken token)

     at JetBrains.Metadata.Reader.Impl.MetadataTypeBuilder.BuildClassType(MetadataToken typeDefOrRefOrSpecToken)

     at JetBrains.Metadata.Reader.Impl.TypeBlobDecoder.DecodeTypeDefOrRef[T,TMethodSig](IBinaryReader reader, ITypeBuilder`2 typeBuilder)

     at JetBrains.Metadata.Reader.Impl.TypeBlobDecoder.DecodeType[TType,TMethodSig](IBinaryReader reader, ITypeBuilder`2 typeBuilder)

     at JetBrains.Metadata.Reader.Impl.MetadataAssembly.DecodeType(IBinaryReader reader, TypeDecodeContext context)

     at JetBrains.Metadata.Reader.Impl.MetadataProperty.ReadSignature(IBlob signatureBlob)

     at JetBrains.Metadata.Reader.Impl.MetadataProperty..ctor(MetadataToken token, IMetadataAssembly assembly)

     at JetBrains.Metadata.Reader.Impl.MetadataTypeInfo.GetProperties()

     at JetBrains.Application.Table.Emit.EmitCatalogTables.Types.IsPart(IMetadataTypeInfo typedecl)

     at JetBrains.Application.Table.Emit.EmitCatalogTables.Assemblies.PreCreateAssemblyForCataloging(AssemblyNameInfo assnameAsRequested, EmitTimeTables tables, IAssemblyMasterBinder masterbinder, MetadataLoader metaloader)

     at JetBrains.Application.Table.Emit.EmitCatalogTables.<>c__DisplayClass3.<CreateCatalogTablesWithMetadataReader>b__0(Lifetime lifetime)

     at JetBrains.DataFlow.Lifetimes.Using(Action`1 λ)

     at JetBrains.Application.Table.Emit.EmitCatalogTables.CreateCatalogTablesWithMetadataReader(IEnumerable`1 assemblies, IAssemblyMasterBinder masterbinder, ICollection`1 traitcalc, Stream output)

     at JetBrains.Application.BuildScript.Application.Catalogs.PartCatalogs.CreateWithMetadataReaderRaw(Lifetime lifetime, IEnumerable`1 assemblies, IAssemblyMasterBinder masterbinder)

     at JetBrains.Application.Environment.DeployedPackagesLoader.CreateAdHocCatalogForUncatalogedAssemblies(Lifetime lifeCreationProcess, ICollection`1 assembliesForAdHocCataloging, DeployedPackagesMasterBinderData binderlist, ICollection`1 catables)

     at JetBrains.Application.Environment.DeployedPackagesLoader.Load(Lifetime lifetime, DeployedPackagesIdentity identity, Diagnostyx diag)

     at JetBrains.Application.Environment.DeployedPackagesCache.LoadWithCaching(Lifetime lifetime, DeployedPackagesIdentity identity)

     at JetBrains.Application.Environment.DeployedPackages.LoadWithCaching(Lifetime lifetime, DeployedPackagesIdentity identity)

     at JetBrains.Application.Environment.HostParameters.CollectProductPackagesInDirectoryFlatHostMixin.JetBrains.Application.Environment.HostParameters.IHaveFullPartCatalogSetHostMixin.GetFullPartCatalogSet(Lifetime lifetime)

     at JetBrains.Application.Environment.HostParameters.JetHostParametersCaller.GetFullPartCatalogSet(Lifetime lifetime)

     at JetBrains.Application.Environment.JetEnvironment..ctor(Lifetime lifetime, JetHostParametersCaller host)

     at JetBrains.Application.Environment.JetEnvironment.<>c__DisplayClass11.<InternalCreate>b__e()

     at JetBrains.Threading.ReentrancyGuard.Execute(String name, Action action)

     at JetBrains.Application.Environment.JetEnvironment.InternalCreate(LifetimeDefinition lifetimeDefinition, JetHostParametersCaller host, JetEnvironment& environment)

     at JetBrains.Application.Environment.JetEnvironment.<>c__DisplayClass9.<CreateDontRun>b__7()

     at JetBrains.DataFlow.Lifetime.AddBracket(Action FOpening, Action FClosing)

     at JetBrains.Application.Environment.JetEnvironment.CreateDontRun(Lifetime lifetime, JetHostParameters hostparams)

     at JetBrains.VsIntegration.Shell.Package.VsPackage.Init_CreateHostAndEnvironment(Lifetime lifetime, IServiceProvider site)

     at JetBrains.VsIntegration.Shell.Package.VsPackage.<.ctor>b__6(Lifetime lifeHaveSite, IServiceProvider site)

     at JetBrains.DataFlow.IPropertyEx.<>c__DisplayClass39`1.<ForEachValue>b__38(Lifetime lf, TValue value, Object cookie)

     at JetBrains.DataFlow.IPropertyEx.<>c__DisplayClass3d`1.<>c__DisplayClass3f.<ForEachValue>b__3c(Lifetime lifetimeValue)

     at JetBrains.DataFlow.SequentialLifetimes.<>c__DisplayClass6.<Next>b__5(LifetimeDefinition definition, Lifetime lifetime)

     at JetBrains.DataFlow.Lifetimes.Define(Lifetime lifetime, String id, Action`2 FAtomic, ILogger logger)

     at JetBrains.DataFlow.SequentialLifetimes.DefineNext(Action`2 FNext)

     at JetBrains.DataFlow.SequentialLifetimes.Next(Action`1 FNext)

     at JetBrains.DataFlow.IPropertyEx.<>c__DisplayClass3d`1.<ForEachValue>b__3b(PropertyChangedEventArgs`1 args)

     at JetBrains.DataFlow.Signal`1.NotifySinks(TValue payload)

     at JetBrains.DataFlow.Signal`1.Fire(TValue value, Object cookie)

     at JetBrains.DataFlow.Property`1.FireChange(TValue old, TValue new, Object cookie)

     at JetBrains.DataFlow.Property`1.SetValue(TValue value, Object cookie)

     at JetBrains.VsIntegration.Shell.Package.VsPackageSdkStub.Microsoft.VisualStudio.Shell.Interop.IVsPackage.SetSite(IServiceProvider sp)

”

Actually there are several message boxes which follow each other after clicking [No]:

image

image

image

image

NN--- commented 7 years ago

Happens with R# EAP 5. Didn't happen before.

NKnusperer commented 7 years ago

Same issue here with EAP 5.

NKnusperer commented 7 years ago

Same with EAP 6.

stackalloc commented 7 years ago

@MrJul Same with RTM :(

mokeyish commented 7 years ago

clear the temp folder ,will crash run time error.

NKnusperer commented 7 years ago

Any schedule on the horizon when this extension will be functional again?

MrJul commented 7 years ago

There isn't much I can do at this point unfortunately, sorry :( Please track the related ReSharper issue linked above.

People with this problem mostly have installation issues but the plugin works fine afterwards. Except for @dmitrykm's report, and I assume, yours.

NN--- commented 7 years ago

Works with Resharper 2017.1.1. Still displays an error while installer but works !

mstefarov commented 7 years ago

Trying EnhancedTooltips with ReSharper 2017.2 RTM / VisualStudio 2017.3.2. Got installation errors similar to the ones reported here: https://gist.github.com/fragmer/3635600bcfbe61b7a02821282c1106f4

The extension did install, and it works some of the time. No crashes in use, but lots of missing tooltips.

rob8861 commented 6 years ago

Hello Has there been any progress on this bug? I tried installing the plugin and I got the same error Resharper 2017.2.2 and VS2017 15.4.1

Thanks,

Muscipular commented 6 years ago

same installion error, no runtime error and tooltips not working R# 2017.3 & VS 2017 15.5.2 & tooltips 3.4.0

rob8861 commented 6 years ago

same here. I got "5 errors" related to the ITextBuffer problem. I thought that issue was fixed in 2017.3

R# 2017.3 & VS 2017 15.5.2 & tooltips 3.4.0

mstefarov commented 6 years ago

Tried installing again into ReSharper 2017.3.1 / VS 2017 15.5.2 — still getting some errors, and extension still does not work after install.

rob8861 commented 6 years ago

This plugin is pretty much broken on all versions of R# 2017. What's even weirder is the fact that it works for 30% of users. It runs on my laptop, but broken on my desktop. both running same OS, same VS version and same R# version. I am in touch with one of the R# engineers and he told me they are actively looking into this issue. Not sure how much the Author is involved , but I suggested to the R# team to integrate this into the baseline build of R# since this plugin is very popular.

FutureTD commented 6 years ago

Is this issue being looked into? Having the same problem as everyone else: ReSharper 2017.3.1 / VS 2017 15.5.3, errors after installation, extension not working .

Is there a workaround/fix for this problem?

lethalshadow commented 6 years ago

It works on VS 2017 if I also have VS 2015 installed. If only VS 2017 is installed on the machine the extension doesn't work.

rob8861 commented 6 years ago

@lethalshadow exactly! and that's because VS2015 installs the ITextBuffer dll in the GAC. However, in 2017 Microsoft changed that. So unless you install 2015 or you had 2015 previously installed, this plugin won't work. Resharper knows about this issue but unfortunately it's not hot enough for them to push a fix.

FutureTD commented 6 years ago

@rob8861 can you install the ITextBuffer.dll without installing VS2015?

n0dal93 commented 6 years ago

Following the lead from @rob8861, I fixed this by copying the Microsoft.VisualStudio.Text.Data.dll from a PC with an existing instance of visual studio 2015 and registered it in the GAC. The biggest obstacle for some may be obtaining an old version of this file. If you don't have a copy of the vs2015 install lying around, you may still be able to download it from Microsoft and install it temporarily to extract the dll.

per microsoft: Global Assembly Cache

Starting with the .NET Framework 4, the default location for the Global Assembly Cache is %windir%\Microsoft.NET\assembly

you should be able to find Microsoft.VisualStudio.Text.Data.dll under: %windir%\Microsoft.NET\assemblyGAC_MSIL\Microsoft.VisualStudio.Text.Data\v4.0_14.0.0.0__b03f5f7f11d50a3a

After locating this file I copied it to my new pc and registered it in the GAC by:

  1. Closing Visual studio 2017.
  2. Running the Visual Studio 2017 Developer Prompt as administrator.
  3. Entering the command: gacutil /i c:\temp\Microsoft.VisualStudio.Text.Data.dll

It appears that you don't have to uninstall Resharper or even the Enhanced tool tip extension. I followed the above steps, opened a project in visual studio and immediately I could see the extension was working.

For more information on the gacutil see: docs.microsoft.com - Gacutil

hope this helps.

rob8861 commented 6 years ago

@n0dal93 Thank you for sharing the workaround. I did some more research and I found out that since VS2017, Microsoft nugetized the library (they seem to be doing that a lot nowadays) and you can now get it via Nuget. However, this plugin somehow is looking for this Interface which defines some UTF-16 encoding and since the DLL itself is no longer in the GAC, the installation errors out.

@MrJul do you think you can somehow add this nuget package as a dependency to this plugin so when it is installed, the Microsoft.VisualStudio.Text.Data.dll is installed with it? (https://www.nuget.org/packages/Microsoft.VisualStudio.Text.Data/)

I honestly lost any faith in the Resharper team proving a suitable fix so I think your workaround might be the best option we have at the moment.

Good job buddy and thanks again for sharing.

n0dal93 commented 6 years ago

@rob8861- Im glad I could help. Also, Excellent work tracking down the nuget package! Extracting the dll from a package will alleviate the hassle of pulling the dll off of another client. Ill give it a go tomorrow. Thanks again!

MrJul commented 6 years ago

You don't really need to copy the Microsoft.VisualStudio.Text.Data from an older VS version.

As described in RSRP-463582, ReSharper only looks into the PublicAssemblies and PrivateAssemblies folders (in the Visual Studio install directory) when searching for dependencies (edit: it also searches the GAC). However, Microsoft.VisualStudio.Text.Data is located in CommonExtensions\Microsoft\Editor so ReSharper doesn't find it. Note that Visual Studio itself has no problem loading it: it's only ReSharper checking in advance that all assemblies will be resolved, with a different algorithm from VS, that causes problems.

A simpler workaround might be to copy or symlink/hardlink CommonExtensions\Microsoft\Editor\Microsoft.VisualStudio.Text.Data.dll to PrivateAssemblies\Microsoft.VisualStudio.Text.Data.dll. No need for an older version of VS or extracting NuGet packages.

I can't add it at as a dependency since we want to really use the assembly from the current Visual Studio's version.

n0dal93 commented 6 years ago

@MrJul, thank you for responding and providing further insight. Your suggestion to use a symlink is much simpler.

Great plugin by the way! Its the only extension I find essential. Thank you for supporting the community and especially this plugin for all these years. :)

rob8861 commented 6 years ago

Creating a symbolic link to the Microsoft.VisualStudio.Text.Data apparently was not enough. After doing so, I still got the errors. It turned out, this time resharper was trying to resolve Microsoft.VisualStudio.Text.Editor so I added a symbolic link to that as well. After that resharper wanted Microsoft.VisualStudio.Text.UI etc etc...

you get the idea. Basically Resharper will continue requesting more and more DLLs which have been moved from the GAC to CommonExtensions\Microsoft\Editor

Since the error is harmless, I am just going to ignore it until resharper decide to fix this issue.

mario-d-s commented 6 years ago

@MrJul thanks for making this extension and thanks for the workaround, it works perfectly now!

NN--- commented 6 years ago

IMO the best solution is to have this as built-in part of ReSharper :)

rob8861 commented 5 years ago

According to youtrack, the issue has been fixed in 2018.3 can anyone confirm.

lethalshadow commented 5 years ago

EnhancedToolTip no longer shows up as an extension that can be installed on ReSharper 2018.3 with VS2017. I think it's because it has a dependency on Wave v182 and the extension list only shows extensions that use Wave v183.

CADbloke commented 5 years ago

@lethalshadow see #138

CADbloke commented 5 years ago

Still getting installation errors in VS 15.9.7 on Win 10 R# 2018.3.3. - exact versions at the end of the attached log.

Seems to work just fine, had no running problems with a few installations on similar versions. cheers EnhancedTooltip installation errors.txt