Add Silverlight assembly search paths
This commit is contained in:
parent
93ad40d218
commit
65a9e7dbc1
|
@ -20,6 +20,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
using Mono.Cecil;
|
using Mono.Cecil;
|
||||||
|
|
||||||
namespace de4dot {
|
namespace de4dot {
|
||||||
|
@ -31,6 +32,56 @@ namespace de4dot {
|
||||||
static AssemblyResolver() {
|
static AssemblyResolver() {
|
||||||
// Make sure there's only ONE assembly resolver
|
// Make sure there's only ONE assembly resolver
|
||||||
GlobalAssemblyResolver.Instance = Instance;
|
GlobalAssemblyResolver.Instance = Instance;
|
||||||
|
addSilverlightSearchPaths();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void addSilverlightSearchPaths() {
|
||||||
|
addSilverlightSearchPaths(Environment.GetEnvironmentVariable("ProgramFiles"));
|
||||||
|
addSilverlightSearchPaths(Environment.GetEnvironmentVariable("ProgramFiles(x86)"));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void addSilverlightSearchPaths(string path) {
|
||||||
|
if (string.IsNullOrEmpty(path))
|
||||||
|
return;
|
||||||
|
addSilverlightDirs(Path.Combine(path, @"Microsoft Silverlight"));
|
||||||
|
addIfExists(path, @"Microsoft SDKs\Silverlight\v3.0\Libraries\Client");
|
||||||
|
addIfExists(path, @"Microsoft SDKs\Silverlight\v3.0\Libraries\Server");
|
||||||
|
addIfExists(path, @"Microsoft SDKs\Silverlight\v4.0\Libraries\Client");
|
||||||
|
addIfExists(path, @"Microsoft SDKs\Silverlight\v4.0\Libraries\Server");
|
||||||
|
addIfExists(path, @"Reference Assemblies\Microsoft\Framework\Silverlight\v3.0");
|
||||||
|
addIfExists(path, @"Reference Assemblies\Microsoft\Framework\Silverlight\v4.0");
|
||||||
|
}
|
||||||
|
|
||||||
|
// basePath is eg. "C:\Program Files (x86)\Microsoft Silverlight"
|
||||||
|
static void addSilverlightDirs(string basePath) {
|
||||||
|
try {
|
||||||
|
var di = new DirectoryInfo(basePath);
|
||||||
|
foreach (var dir in di.GetDirectories()) {
|
||||||
|
if (Regex.IsMatch(dir.Name, @"^\d+(?:\.\d+){3}$"))
|
||||||
|
addIfExists(basePath, dir.Name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void addIfExists(string basePath, string extraPath) {
|
||||||
|
try {
|
||||||
|
var path = Path.Combine(basePath, extraPath);
|
||||||
|
if (pathExists(path))
|
||||||
|
Instance.addSearchDirectory(path);
|
||||||
|
}
|
||||||
|
catch (Exception) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool pathExists(string path) {
|
||||||
|
try {
|
||||||
|
return new DirectoryInfo(path).Exists;
|
||||||
|
}
|
||||||
|
catch (Exception) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addSearchDirectory(string dir) {
|
public void addSearchDirectory(string dir) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user