Example #1
0
 static bool IsAssemblyRef(AssemblyRef asmRef, UTF8String name, PublicKeyToken token)
 {
     if (asmRef.Name != name)
         return false;
     var pkot = asmRef.PublicKeyOrToken;
     if (pkot == null)
         return false;
     return token.Equals(pkot.Token);
 }
Example #2
0
 public FrameworkRedirectInfo(string publicKeyToken, string redirectVersion)
 {
     this.publicKeyToken  = new PublicKeyToken(publicKeyToken);
     this.redirectVersion = new Version(redirectVersion);
 }
Example #3
0
		static string GetAssemblyFile(IAssembly reference, string prefix, string gac) {
			var gac_folder = new StringBuilder()
				.Append(prefix)
				.Append(reference.Version)
				.Append("__");

			var pkt = PublicKeyBase.ToPublicKeyToken(reference.PublicKeyOrToken);
			if (PublicKeyBase.IsNullOrEmpty2(pkt))
				pkt = new PublicKeyToken(new byte[8]);
			for (int i = 0; i < pkt.Data.Length; i++)
				gac_folder.Append(pkt.Data[i].ToString("x2"));

			try {
				return Path.Combine(
					Path.Combine(
						Path.Combine(gac, reference.Name), gac_folder.ToString()),
					reference.Name + ".dll");
			}
			catch (ArgumentException) {
			}
			return null;
		}
Example #4
0
 static IEnumerable<GacFileInfo> GetAssemblies(GacDirInfo gacInfo)
 {
     foreach (var subDir in gacInfo.SubDirs) {
         var baseDir = Path.Combine(gacInfo.Path, subDir);
         foreach (var dir in GetDirectories(baseDir)) {
             foreach (var dir2 in GetDirectories(dir)) {
                 Version version;
                 string culture;
                 PublicKeyToken pkt;
                 if (gacInfo.Version == 2) {
                     var m = gac2Regex.Match(Path.GetFileName(dir2));
                     if (!m.Success || m.Groups.Count != 4)
                         continue;
                     if (!Version.TryParse(m.Groups[1].Value, out version))
                         continue;
                     culture = m.Groups[2].Value;
                     pkt = new PublicKeyToken(m.Groups[3].Value);
                     if (PublicKeyBase.IsNullOrEmpty2(pkt))
                         continue;
                 }
                 else if (gacInfo.Version == 4) {
                     var m = gac4Regex.Match(Path.GetFileName(dir2));
                     if (!m.Success || m.Groups.Count != 4)
                         continue;
                     if (!Version.TryParse(m.Groups[1].Value, out version))
                         continue;
                     culture = m.Groups[2].Value;
                     pkt = new PublicKeyToken(m.Groups[3].Value);
                     if (PublicKeyBase.IsNullOrEmpty2(pkt))
                         continue;
                 }
                 else
                     throw new InvalidOperationException();
                 var asmName = Path.GetFileName(dir);
                 var file = Path.Combine(dir2, asmName) + ".dll";
                 if (!File.Exists(file)) {
                     file = Path.Combine(dir2, asmName) + ".exe";
                     if (!File.Exists(file))
                         continue;
                 }
                 var asmInfo = new AssemblyNameInfo {
                     Name = asmName,
                     Version = version,
                     Culture = culture,
                     PublicKeyOrToken = pkt,
                 };
                 yield return new GacFileInfo(asmInfo, file);
             }
         }
     }
 }
Example #5
0
 static IEnumerable<string> GetAssemblies(GacDirInfo gacInfo, PublicKeyToken pkt, IAssembly assembly)
 {
     string pktString = pkt.ToString();
     string verString = assembly.Version.ToString();
     var cultureString = UTF8String.ToSystemStringOrEmpty(assembly.Culture);
     if (cultureString.Equals("neutral", StringComparison.OrdinalIgnoreCase))
         cultureString = string.Empty;
     var asmSimpleName = UTF8String.ToSystemStringOrEmpty(assembly.Name);
     foreach (var subDir in gacInfo.SubDirs) {
         var baseDir = Path.Combine(gacInfo.Path, subDir);
         baseDir = Path.Combine(baseDir, asmSimpleName);
         baseDir = Path.Combine(baseDir, string.Format("{0}{1}_{2}_{3}", gacInfo.Prefix, verString, cultureString, pktString));
         var pathName = Path.Combine(baseDir, asmSimpleName + ".dll");
         if (File.Exists(pathName))
             yield return pathName;
     }
 }
Example #6
0
			public FrameworkRedirectInfo(string publicKeyToken, string redirectVersion) {
				this.publicKeyToken = new PublicKeyToken(publicKeyToken);
				this.redirectVersion = new Version(redirectVersion);
			}