AvaloniaUI / AvaloniaVS

Visual Studio Extension for Avalonia
MIT License
412 stars 77 forks source link

Intellisense does not work whem mix assembly version #479

Closed workgroupengineering closed 3 days ago

workgroupengineering commented 1 month ago

Describe the bug

If you add references Avalonia 11.0.10 and Avalonia.Labs.Controls 11.0.10.1 to a project, in some cases intellisense does not work

To Reproduce

none

AvaloniaVS plugin version

11.5, 41f4539f7093a1792598f6b284f52c4aaa142dca

Avalonia version

11.0.10

Visual Studio version

17.9.7

Relevant log output

none

Additional context

After the investigations I have done this depends on the following line:

https://github.com/AvaloniaUI/AvaloniaVS/blob/41f4539f7093a1792598f6b284f52c4aaa142dca/CompletionEngine/Avalonia.Ide.CompletionEngine/AssemblyMetadata/MetadataConverter.cs#L169

types are indexed by AssemblyQualifiedName which also contains the assembly version.

My Pro target net7.0 Avalonia 11.0.10

Avalonia.Labs.Controls 11.0.10.1 Labs has the base version of Avalonia 11.0 see here

The obj\Debug\net7.0\Avalonia\reference will have similar content

...
C:\Users\...\.nuget\packages\avalonia\11.0.10\ref\net6.0\Avalonia.Base.dll
C:\Users\...\.nuget\packages\avalonia\11.0.10\ref\net6.0\Avalonia.Controls.dll
C:\Users\...\.nuget\packages\avalonia\11.0.10\ref\net6.0\Avalonia.DesignerSupport.dll
C:\Users\...\.nuget\packages\avalonia\11.0.10\ref\net6.0\Avalonia.Dialogs.dll
C:\Users\...\.nuget\packages\avalonia\11.0.10\ref\net6.0\Avalonia.dll
C:\Users\...\.nuget\packages\avalonia.labs.controls\11.0.10.1\lib\net6.0\Avalonia.Labs.Controls.dll
...

When at following line try to retrive tproerty type of eg: Swipe.Left well be null because QualifiedTypeFullName is Avalonia.Markup.Xaml.Templates.DataTemplate, Avalonia.Markup.Xaml, Version=11.0.0.0, Culture=neutral, PublicKeyToken=c8d484a7012f9a8b

https://github.com/AvaloniaUI/AvaloniaVS/blob/41f4539f7093a1792598f6b284f52c4aaa142dca/CompletionEngine/Avalonia.Ide.CompletionEngine/AssemblyMetadata/MetadataConverter.cs#L232