diff options
author | David Karlaš <david.karlas@xamarin.com> | 2016-11-30 17:57:07 +0300 |
---|---|---|
committer | David Karlaš <david.karlas@xamarin.com> | 2016-11-30 17:57:49 +0300 |
commit | ca287231cfe2d122fa55081964b6fbc3f6fae77a (patch) | |
tree | eb5a575f395404a78f57712fb0b220e30a78cf3b /main/src/addins/TextTemplating | |
parent | 8f658e39b8545963ae196c88ff4e71f28caa72cc (diff) |
Bug 41738 - The 'TextTemplatingFileGenerator' code generator crashed: Object reference not set to an instance of an object
Diffstat (limited to 'main/src/addins/TextTemplating')
-rw-r--r-- | main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplatingEngine.cs | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplatingEngine.cs b/main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplatingEngine.cs index 7672696a6b..bac0fd4ec0 100644 --- a/main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplatingEngine.cs +++ b/main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplatingEngine.cs @@ -173,24 +173,24 @@ namespace Mono.TextTemplating pars.CompilerOptions = "/noconfig " + pars.CompilerOptions; return settings.Provider.CompileAssemblyFromDom (pars, ccu); } - - static HashSet<string> ProcessReferences (ITextTemplatingEngineHost host, ParsedTemplate pt, TemplateSettings settings) + + static string [] ProcessReferences (ITextTemplatingEngineHost host, ParsedTemplate pt, TemplateSettings settings) { - var resolved = new HashSet<string> (); - + var resolved = new Dictionary<string, string> (); + foreach (string assem in settings.Assemblies.Union (host.StandardAssemblyReferences)) { - if (resolved.Contains (assem)) + if (resolved.Values.Contains (assem)) continue; - + string resolvedAssem = host.ResolveAssemblyReference (assem); - if (!string.IsNullOrEmpty (resolvedAssem)) { - resolved.Add (resolvedAssem); + if (!string.IsNullOrEmpty (resolvedAssem) && File.Exists (resolvedAssem)) { + resolved [AssemblyName.GetAssemblyName (resolvedAssem).FullName] = resolvedAssem; } else { pt.LogError ("Could not resolve assembly reference '" + assem + "'"); return null; } } - return resolved; + return resolved.Values.ToArray (); } public static TemplateSettings GetSettings (ITextTemplatingEngineHost host, ParsedTemplate pt) |