コード例 #1
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="asmName">Assembly name info</param>
 public AssemblyNameInfo(AssemblyName asmName)
 {
     if (asmName == null)
     {
         return;
     }
     this.hashAlgId        = (AssemblyHashAlgorithm)asmName.HashAlgorithm;
     this.version          = asmName.Version ?? new Version(0, 0, 0, 0);
     this.flags            = (AssemblyAttributes)asmName.Flags;
     this.publicKeyOrToken = (PublicKeyBase)PublicKeyBase.CreatePublicKey(asmName.GetPublicKey()) ??
                             PublicKeyBase.CreatePublicKeyToken(asmName.GetPublicKeyToken());
     this.name    = asmName.Name ?? string.Empty;
     this.culture = asmName.CultureInfo != null && asmName.CultureInfo.Name != null ? asmName.CultureInfo.Name : string.Empty;
 }
コード例 #2
0
        private AssemblyRef ReadAssemblyRef()
        {
            var asmRef = new AssemblyRefUser();

            if (ownerModule != null)
            {
                ownerModule.UpdateRowId(asmRef);
            }

            asmRef.Name = ReadAssemblyNameId();
            SkipWhite();
            if (PeekChar() != ',')
            {
                return(asmRef);
            }
            ReadChar();

            while (true)
            {
                SkipWhite();
                var c = PeekChar();
                if (c == -1 || c == ']')
                {
                    break;
                }
                if (c == ',')
                {
                    ReadChar();
                    continue;
                }

                var key = ReadId();
                SkipWhite();
                if (PeekChar() != '=')
                {
                    continue;
                }
                ReadChar();
                var value = ReadId();

                switch (key.ToUpperInvariant())
                {
                case "VERSION":
                    asmRef.Version = Utils.ParseVersion(value);
                    break;

                case "CONTENTTYPE":
                    if (value.Equals("WindowsRuntime", StringComparison.OrdinalIgnoreCase))
                    {
                        asmRef.ContentType = AssemblyAttributes.ContentType_WindowsRuntime;
                    }
                    else
                    {
                        asmRef.ContentType = AssemblyAttributes.ContentType_Default;
                    }
                    break;

                case "RETARGETABLE":
                    if (value.Equals("Yes", StringComparison.OrdinalIgnoreCase))
                    {
                        asmRef.IsRetargetable = true;
                    }
                    else
                    {
                        asmRef.IsRetargetable = false;
                    }
                    break;

                case "PUBLICKEY":
                    if (value.Equals("null", StringComparison.OrdinalIgnoreCase) ||
                        value.Equals("neutral", StringComparison.OrdinalIgnoreCase))
                    {
                        asmRef.PublicKeyOrToken = new PublicKey();
                    }
                    else
                    {
                        asmRef.PublicKeyOrToken = PublicKeyBase.CreatePublicKey(Utils.ParseBytes(value));
                    }
                    break;

                case "PUBLICKEYTOKEN":
                    if (value.Equals("null", StringComparison.OrdinalIgnoreCase) ||
                        value.Equals("neutral", StringComparison.OrdinalIgnoreCase))
                    {
                        asmRef.PublicKeyOrToken = new PublicKeyToken();
                    }
                    else
                    {
                        asmRef.PublicKeyOrToken = PublicKeyBase.CreatePublicKeyToken(Utils.ParseBytes(value));
                    }
                    break;

                case "CULTURE":
                case "LANGUAGE":
                    if (value.Equals("neutral", StringComparison.OrdinalIgnoreCase))
                    {
                        asmRef.Culture = UTF8String.Empty;
                    }
                    else
                    {
                        asmRef.Culture = value;
                    }
                    break;
                }
            }

            return(asmRef);
        }
コード例 #3
0
        AssemblyRef ReadAssemblyRef()
        {
            var asmRef = new AssemblyRefUser();

            if (ownerModule != null)
            {
                ownerModule.UpdateRowId(asmRef);
            }

            asmRef.Name = ReadId();
            SkipWhite();
            if (PeekChar() != ',')
            {
                return(asmRef);
            }
            ReadChar();

            while (true)
            {
                SkipWhite();
                int c = PeekChar();
                if (c == -1 || c == ']')
                {
                    break;
                }
                if (c == ',')
                {
                    ReadChar();
                    continue;
                }

                string key = ReadId();
                SkipWhite();
                if (PeekChar() != '=')
                {
                    continue;
                }
                ReadChar();
                string value = ReadId();

                switch (key.ToUpperInvariant())
                {
                case "VERSION":
                    asmRef.Version = Utils.ParseVersion(value);
                    break;

                case "PUBLICKEY":
                    if (value.Equals("null", StringComparison.OrdinalIgnoreCase))
                    {
                        asmRef.PublicKeyOrToken = new PublicKey();
                    }
                    else
                    {
                        asmRef.PublicKeyOrToken = PublicKeyBase.CreatePublicKey(Utils.ParseBytes(value));
                    }
                    break;

                case "PUBLICKEYTOKEN":
                    if (value.Equals("null", StringComparison.OrdinalIgnoreCase))
                    {
                        asmRef.PublicKeyOrToken = new PublicKeyToken();
                    }
                    else
                    {
                        asmRef.PublicKeyOrToken = PublicKeyBase.CreatePublicKeyToken(Utils.ParseBytes(value));
                    }
                    break;

                case "CULTURE":
                    if (value.Equals("neutral", StringComparison.OrdinalIgnoreCase))
                    {
                        asmRef.Culture = UTF8String.Empty;
                    }
                    else
                    {
                        asmRef.Culture = value;
                    }
                    break;
                }
            }

            return(asmRef);
        }