未验证 提交 1f16bdf8 编写于 作者: C Carol Hu 提交者: GitHub

Remove dependency for Microsoft.VisualStudio.ImageCatalog.dll (#27778)

上级 3ef1927a
......@@ -10,6 +10,11 @@ namespace Microsoft.CodeAnalysis.Editor.Shared.Extensions
{
internal static class GlyphExtensions
{
// hardcode ImageCatalogGuid locally rather than calling KnownImageIds.ImageCatalogGuid
// So it doesnot have dependency for Microsoft.VisualStudio.ImageCatalog.dll
// https://github.com/dotnet/roslyn/issues/26642
private static readonly Guid ImageCatalogGuid = Guid.Parse("ae27a6b0-e345-4288-96df-5eaf394ee369");
public static ImageId GetImageId(this Glyph glyph)
{
// VS for mac cannot refer to ImageMoniker
......@@ -21,152 +26,152 @@ public static ImageId GetImageId(this Glyph glyph)
return default;
case Glyph.Assembly:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.Assembly);
return new ImageId(ImageCatalogGuid, KnownImageIds.Assembly);
case Glyph.BasicFile:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.VBFileNode);
return new ImageId(ImageCatalogGuid, KnownImageIds.VBFileNode);
case Glyph.BasicProject:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.VBProjectNode);
return new ImageId(ImageCatalogGuid, KnownImageIds.VBProjectNode);
case Glyph.ClassPublic:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.ClassPublic);
return new ImageId(ImageCatalogGuid, KnownImageIds.ClassPublic);
case Glyph.ClassProtected:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.ClassProtected);
return new ImageId(ImageCatalogGuid, KnownImageIds.ClassProtected);
case Glyph.ClassPrivate:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.ClassPrivate);
return new ImageId(ImageCatalogGuid, KnownImageIds.ClassPrivate);
case Glyph.ClassInternal:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.ClassInternal);
return new ImageId(ImageCatalogGuid, KnownImageIds.ClassInternal);
case Glyph.CSharpFile:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.CSFileNode);
return new ImageId(ImageCatalogGuid, KnownImageIds.CSFileNode);
case Glyph.CSharpProject:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.CSProjectNode);
return new ImageId(ImageCatalogGuid, KnownImageIds.CSProjectNode);
case Glyph.ConstantPublic:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.ConstantPublic);
return new ImageId(ImageCatalogGuid, KnownImageIds.ConstantPublic);
case Glyph.ConstantProtected:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.ConstantProtected);
return new ImageId(ImageCatalogGuid, KnownImageIds.ConstantProtected);
case Glyph.ConstantPrivate:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.ConstantPrivate);
return new ImageId(ImageCatalogGuid, KnownImageIds.ConstantPrivate);
case Glyph.ConstantInternal:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.ConstantInternal);
return new ImageId(ImageCatalogGuid, KnownImageIds.ConstantInternal);
case Glyph.DelegatePublic:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.DelegatePublic);
return new ImageId(ImageCatalogGuid, KnownImageIds.DelegatePublic);
case Glyph.DelegateProtected:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.DelegateProtected);
return new ImageId(ImageCatalogGuid, KnownImageIds.DelegateProtected);
case Glyph.DelegatePrivate:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.DelegatePrivate);
return new ImageId(ImageCatalogGuid, KnownImageIds.DelegatePrivate);
case Glyph.DelegateInternal:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.DelegateInternal);
return new ImageId(ImageCatalogGuid, KnownImageIds.DelegateInternal);
case Glyph.EnumPublic:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.EnumerationPublic);
return new ImageId(ImageCatalogGuid, KnownImageIds.EnumerationPublic);
case Glyph.EnumProtected:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.EnumerationProtected);
return new ImageId(ImageCatalogGuid, KnownImageIds.EnumerationProtected);
case Glyph.EnumPrivate:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.EnumerationPrivate);
return new ImageId(ImageCatalogGuid, KnownImageIds.EnumerationPrivate);
case Glyph.EnumInternal:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.EnumerationInternal);
return new ImageId(ImageCatalogGuid, KnownImageIds.EnumerationInternal);
case Glyph.EnumMemberPublic:
case Glyph.EnumMemberProtected:
case Glyph.EnumMemberPrivate:
case Glyph.EnumMemberInternal:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.EnumerationItemPublic);
return new ImageId(ImageCatalogGuid, KnownImageIds.EnumerationItemPublic);
case Glyph.Error:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.StatusError);
return new ImageId(ImageCatalogGuid, KnownImageIds.StatusError);
case Glyph.EventPublic:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.EventPublic);
return new ImageId(ImageCatalogGuid, KnownImageIds.EventPublic);
case Glyph.EventProtected:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.EventProtected);
return new ImageId(ImageCatalogGuid, KnownImageIds.EventProtected);
case Glyph.EventPrivate:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.EventPrivate);
return new ImageId(ImageCatalogGuid, KnownImageIds.EventPrivate);
case Glyph.EventInternal:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.EventInternal);
return new ImageId(ImageCatalogGuid, KnownImageIds.EventInternal);
// Extension methods have the same glyph regardless of accessibility.
case Glyph.ExtensionMethodPublic:
case Glyph.ExtensionMethodProtected:
case Glyph.ExtensionMethodPrivate:
case Glyph.ExtensionMethodInternal:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.ExtensionMethod);
return new ImageId(ImageCatalogGuid, KnownImageIds.ExtensionMethod);
case Glyph.FieldPublic:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.FieldPublic);
return new ImageId(ImageCatalogGuid, KnownImageIds.FieldPublic);
case Glyph.FieldProtected:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.FieldProtected);
return new ImageId(ImageCatalogGuid, KnownImageIds.FieldProtected);
case Glyph.FieldPrivate:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.FieldPrivate);
return new ImageId(ImageCatalogGuid, KnownImageIds.FieldPrivate);
case Glyph.FieldInternal:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.FieldInternal);
return new ImageId(ImageCatalogGuid, KnownImageIds.FieldInternal);
case Glyph.InterfacePublic:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.InterfacePublic);
return new ImageId(ImageCatalogGuid, KnownImageIds.InterfacePublic);
case Glyph.InterfaceProtected:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.InterfaceProtected);
return new ImageId(ImageCatalogGuid, KnownImageIds.InterfaceProtected);
case Glyph.InterfacePrivate:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.InterfacePrivate);
return new ImageId(ImageCatalogGuid, KnownImageIds.InterfacePrivate);
case Glyph.InterfaceInternal:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.InterfaceInternal);
return new ImageId(ImageCatalogGuid, KnownImageIds.InterfaceInternal);
// TODO: Figure out the right thing to return here.
case Glyph.Intrinsic:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.Type);
return new ImageId(ImageCatalogGuid, KnownImageIds.Type);
case Glyph.Keyword:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.IntellisenseKeyword);
return new ImageId(ImageCatalogGuid, KnownImageIds.IntellisenseKeyword);
case Glyph.Label:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.Label);
return new ImageId(ImageCatalogGuid, KnownImageIds.Label);
case Glyph.Parameter:
case Glyph.Local:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.LocalVariable);
return new ImageId(ImageCatalogGuid, KnownImageIds.LocalVariable);
case Glyph.Namespace:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.Namespace);
return new ImageId(ImageCatalogGuid, KnownImageIds.Namespace);
case Glyph.MethodPublic:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.MethodPublic);
return new ImageId(ImageCatalogGuid, KnownImageIds.MethodPublic);
case Glyph.MethodProtected:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.MethodProtected);
return new ImageId(ImageCatalogGuid, KnownImageIds.MethodProtected);
case Glyph.MethodPrivate:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.MethodPrivate);
return new ImageId(ImageCatalogGuid, KnownImageIds.MethodPrivate);
case Glyph.MethodInternal:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.MethodInternal);
return new ImageId(ImageCatalogGuid, KnownImageIds.MethodInternal);
case Glyph.ModulePublic:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.ModulePublic);
return new ImageId(ImageCatalogGuid, KnownImageIds.ModulePublic);
case Glyph.ModuleProtected:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.ModuleProtected);
return new ImageId(ImageCatalogGuid, KnownImageIds.ModuleProtected);
case Glyph.ModulePrivate:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.ModulePrivate);
return new ImageId(ImageCatalogGuid, KnownImageIds.ModulePrivate);
case Glyph.ModuleInternal:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.ModuleInternal);
return new ImageId(ImageCatalogGuid, KnownImageIds.ModuleInternal);
case Glyph.OpenFolder:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.OpenFolder);
return new ImageId(ImageCatalogGuid, KnownImageIds.OpenFolder);
case Glyph.Operator:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.Operator);
return new ImageId(ImageCatalogGuid, KnownImageIds.Operator);
case Glyph.PropertyPublic:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.PropertyPublic);
return new ImageId(ImageCatalogGuid, KnownImageIds.PropertyPublic);
case Glyph.PropertyProtected:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.PropertyProtected);
return new ImageId(ImageCatalogGuid, KnownImageIds.PropertyProtected);
case Glyph.PropertyPrivate:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.PropertyPrivate);
return new ImageId(ImageCatalogGuid, KnownImageIds.PropertyPrivate);
case Glyph.PropertyInternal:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.PropertyInternal);
return new ImageId(ImageCatalogGuid, KnownImageIds.PropertyInternal);
case Glyph.RangeVariable:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.FieldPublic);
return new ImageId(ImageCatalogGuid, KnownImageIds.FieldPublic);
case Glyph.Reference:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.Reference);
return new ImageId(ImageCatalogGuid, KnownImageIds.Reference);
//// this is not a copy-paste mistake, we were using these before in the previous GetImageMoniker()
//case Glyph.StructurePublic:
......@@ -179,28 +184,28 @@ public static ImageId GetImageId(this Glyph glyph)
// return KnownMonikers.ValueTypeInternal;
case Glyph.StructurePublic:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.ValueTypePublic);
return new ImageId(ImageCatalogGuid, KnownImageIds.ValueTypePublic);
case Glyph.StructureProtected:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.ValueTypeProtected);
return new ImageId(ImageCatalogGuid, KnownImageIds.ValueTypeProtected);
case Glyph.StructurePrivate:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.ValueTypePrivate);
return new ImageId(ImageCatalogGuid, KnownImageIds.ValueTypePrivate);
case Glyph.StructureInternal:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.ValueTypeInternal);
return new ImageId(ImageCatalogGuid, KnownImageIds.ValueTypeInternal);
case Glyph.TypeParameter:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.Type);
return new ImageId(ImageCatalogGuid, KnownImageIds.Type);
case Glyph.Snippet:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.Snippet);
return new ImageId(ImageCatalogGuid, KnownImageIds.Snippet);
case Glyph.CompletionWarning:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.IntellisenseWarning);
return new ImageId(ImageCatalogGuid, KnownImageIds.IntellisenseWarning);
case Glyph.StatusInformation:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.StatusInformation);
return new ImageId(ImageCatalogGuid, KnownImageIds.StatusInformation);
case Glyph.NuGet:
return new ImageId(KnownImageIds.ImageCatalogGuid, KnownImageIds.NuGet);
return new ImageId(ImageCatalogGuid, KnownImageIds.NuGet);
default:
throw new ArgumentException(nameof(glyph));
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Linq;
using Roslyn.Test.Utilities;
using Xunit;
namespace Microsoft.CodeAnalysis.Editor.UnitTests
{
/// <summary>
/// VS for mac has some restrictions on the assemblies that they can load.
/// These tests are created to make sure we don't accidentally add references to the dlls that they cannot load.
/// </summary>
public class AssemblyReferenceTests
{
[Fact, WorkItem(26642, "https://github.com/dotnet/roslyn/issues/26642")]
public void TestNoReferenceToImageCatalog()
{
var editorsFeatureAssembly = typeof(Microsoft.CodeAnalysis.Editor.Shared.Extensions.GlyphExtensions).Assembly;
var dependencies = editorsFeatureAssembly.GetReferencedAssemblies();
Assert.Empty(dependencies.Where(a => a.FullName.Contains("Microsoft.VisualStudio.ImageCatalog")));
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册