当前位置: 首页>>代码示例>>C#>>正文


C# Compilation.GetMetadataReference方法代码示例

本文整理汇总了C#中Compilation.GetMetadataReference方法的典型用法代码示例。如果您正苦于以下问题:C# Compilation.GetMetadataReference方法的具体用法?C# Compilation.GetMetadataReference怎么用?C# Compilation.GetMetadataReference使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Compilation的用法示例。


在下文中一共展示了Compilation.GetMetadataReference方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: CreateNavInfo

        private IVsNavInfo CreateNavInfo(
            IAssemblySymbol containingAssembly,
            Project project,
            Compilation compilation,
            bool useExpandedHierarchy,
            string namespaceName = null,
            string className = null,
            string memberName = null)
        {
            Debug.Assert(containingAssembly != null);
            Debug.Assert(compilation != null);

            var portableExecutableReference = compilation.GetMetadataReference(containingAssembly) as PortableExecutableReference;
            var assemblyName = portableExecutableReference != null
                ? portableExecutableReference.FilePath
                : containingAssembly.Identity.Name;

            var isReferencedAssembly = !containingAssembly.Identity.Equals(compilation.Assembly.Identity);

            // useExpandedHierarchy is true when references are nested inside the project by the
            // hierarchy. In Class View, they are nested in the Project References node. In Object Browser,
            // they are not.
            //
            // In the case that references are nested inside of the project, we need to create the nav info
            // differently:
            //
            //     project -> containing assembly -> namespace -> type
            //
            // Otherwise, we create it like so:
            //
            //     containing assembly -> namespace -> type

            var libraryName = isReferencedAssembly
                ? assemblyName
                : project.GetProjectNavInfoName();

            var metadataProjectItem = useExpandedHierarchy && isReferencedAssembly
                ? project.GetProjectNavInfoName()
                : null;

            return new NavInfo(
                this.LibraryGuid,
                this.SymbolToolLanguage,
                libraryName,
                metadataProjectItem,
                namespaceName,
                className,
                memberName);
        }
开发者ID:ehsansajjad465,项目名称:roslyn,代码行数:49,代码来源:AbstractObjectBrowserLibraryManager_NavInfo.cs

示例2: GetLocationString

        private static string GetLocationString(Compilation compilation, Symbol unwrappedSymbol)
        {
            Debug.Assert((object)unwrappedSymbol == UnwrapSymbol(unwrappedSymbol));

            ImmutableArray<SyntaxReference> syntaxReferences = unwrappedSymbol.DeclaringSyntaxReferences;
            if (syntaxReferences.Length > 0)
            {
                var tree = syntaxReferences[0].SyntaxTree;
                var span = syntaxReferences[0].Span;
                string path = tree.GetDisplayPath(span, (compilation != null) ? compilation.Options.SourceReferenceResolver : null);
                if (!string.IsNullOrEmpty(path))
                {
                    return $"{path}({tree.GetDisplayLineNumber(span)})";
                }
            }

            AssemblySymbol containingAssembly = unwrappedSymbol.ContainingAssembly;
            if ((object)containingAssembly != null)
            {
                if (compilation != null)
                {
                    PortableExecutableReference metadataReference = compilation.GetMetadataReference(containingAssembly) as PortableExecutableReference;
                    if (metadataReference != null)
                    {
                        string path = metadataReference.FilePath;
                        if (!string.IsNullOrEmpty(path))
                        {
                            return path;
                        }
                    }
                }

                return containingAssembly.Identity.ToString();
            }

            Debug.Assert(unwrappedSymbol.Kind == SymbolKind.DynamicType || unwrappedSymbol.Kind == SymbolKind.ErrorType);
            return null;
        }
开发者ID:SoumikMukherjeeDOTNET,项目名称:roslyn,代码行数:38,代码来源:SymbolDistinguisher.cs

示例3: Create

        private IVsNavInfo Create(IAssemblySymbol containingAssembly, Project project, Compilation compilation, bool useExpandedHierarchy = false,
            string namespaceName = null, string className = null, string memberName = null)
        {
            // useExpandedHierarchy is true when references are nested inside the project by the
            // hierarchy. In Class View, they are nested in the Project References node. In Object Browser,
            // they are not.
            //
            // In the case that references are nested inside of the project, we need to create the nav info
            // differently:
            //
            //     project -> containing assembly -> namespace -> type
            //
            // Otherwise, we create it like so:
            //
            //     containing assembly -> namespace -> type

            string libraryName;
            string referenceOwnerName = null;

            var isCompilationAssembly = containingAssembly.Identity.Equals(compilation.Assembly.Identity);
            if (isCompilationAssembly)
            {
                libraryName = GetLibraryName(project);
            }
            else
            {
                var portableExecutableReference = compilation.GetMetadataReference(containingAssembly) as PortableExecutableReference;

                libraryName = portableExecutableReference != null
                    ? portableExecutableReference.FilePath
                    : containingAssembly.Identity.Name;

                if (useExpandedHierarchy)
                {
                    referenceOwnerName = GetLibraryName(project);
                }
            }

            return Create(libraryName, referenceOwnerName, namespaceName, className, memberName);
        }
开发者ID:XieShuquan,项目名称:roslyn,代码行数:40,代码来源:NavInfoFactory.cs


注:本文中的Compilation.GetMetadataReference方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。