Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Karlaš <david.karlas@xamarin.com>2016-06-16 21:49:24 +0300
committerDavid Karlaš <david.karlas@xamarin.com>2016-06-16 22:53:54 +0300
commit7d150d2679974f99dd40220f6217609d8977b5d4 (patch)
tree37f475c92019e4f9356d8ac8bc720c632c247bfe /main/src/addins/TextTemplating
parentb72dc9869790192390ab5f40169b3c4c9f877b7c (diff)
Bug 41738 - The 'TextTemplatingFileGenerator' code generator crashed: Object reference not set to an instance of an object
ProjectFileTemplatingHost.cs: Replacing properties like $(SolutionDir) with correct value when resolving assembly path(https://msdn.microsoft.com/en-us/library/bb126478.aspx#Anchor_3) MonoDevelopTemplatingHost.cs: Apperently it's legal to say "System.dll" in T4, which GAC lookup doesn't like TemplatingEngine.cs: /noconfig is needed so mcs.exe(or csc.exe) doesn't report error CS1703(An assembly `System' with the same identity has already been imported. Consider removing one of the references) for System.dll TemplateGenerator.cs: By adding reference by FullName we let framework resolve full path, which allows deduplication of System.dll reference in case when user also specifies <#@ assembly name="System.dll" #>
Diffstat (limited to 'main/src/addins/TextTemplating')
-rw-r--r--main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplateGenerator.cs2
-rw-r--r--main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplatingEngine.cs5
-rw-r--r--main/src/addins/TextTemplating/MonoDevelop.TextTemplating/MonoDevelopTemplatingHost.cs6
-rw-r--r--main/src/addins/TextTemplating/MonoDevelop.TextTemplating/ProjectFileTemplatingHost.cs7
4 files changed, 17 insertions, 3 deletions
diff --git a/main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplateGenerator.cs b/main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplateGenerator.cs
index 5c661ed7bb..8bf749d932 100644
--- a/main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplateGenerator.cs
+++ b/main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplateGenerator.cs
@@ -62,7 +62,7 @@ namespace Mono.TextTemplating
public TemplateGenerator ()
{
Refs.Add (typeof (TextTransformation).Assembly.Location);
- Refs.Add (typeof(Uri).Assembly.Location);
+ Refs.Add (typeof(Uri).Assembly.FullName);
Imports.Add ("System");
}
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 69a6f6a5c7..7672696a6b 100644
--- a/main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplatingEngine.cs
+++ b/main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplatingEngine.cs
@@ -167,7 +167,10 @@ namespace Mono.TextTemplating
if (settings.Debug)
pars.TempFiles.KeepFiles = true;
-
+ if (string.IsNullOrWhiteSpace (pars.CompilerOptions))
+ pars.CompilerOptions = "/noconfig";
+ else if (!pars.CompilerOptions.Contains ("/noconfig"))
+ pars.CompilerOptions = "/noconfig " + pars.CompilerOptions;
return settings.Provider.CompileAssemblyFromDom (pars, ccu);
}
diff --git a/main/src/addins/TextTemplating/MonoDevelop.TextTemplating/MonoDevelopTemplatingHost.cs b/main/src/addins/TextTemplating/MonoDevelop.TextTemplating/MonoDevelopTemplatingHost.cs
index 1371b950ab..d7dbbdd506 100644
--- a/main/src/addins/TextTemplating/MonoDevelop.TextTemplating/MonoDevelopTemplatingHost.cs
+++ b/main/src/addins/TextTemplating/MonoDevelop.TextTemplating/MonoDevelopTemplatingHost.cs
@@ -70,8 +70,12 @@ namespace MonoDevelop.TextTemplating
var fx = Runtime.SystemAssemblyService.GetTargetFramework (TargetFrameworkMoniker.NET_4_5);
var ctx = Runtime.SystemAssemblyService.CurrentRuntime.AssemblyContext;
- var fullname = ctx.FindInstalledAssembly (assemblyReference, null, fx);
+ if (assemblyReference.EndsWith (".dll", StringComparison.OrdinalIgnoreCase))
+ assemblyReference = assemblyReference.Remove (assemblyReference.Length - 4);
+ var fullname = ctx.FindInstalledAssembly (assemblyReference, null, fx);
+ if (fullname == null)
+ return null;
var asm = ctx.GetAssemblyFromFullName (fullname, null, fx);
if (asm != null)
return asm.Location;
diff --git a/main/src/addins/TextTemplating/MonoDevelop.TextTemplating/ProjectFileTemplatingHost.cs b/main/src/addins/TextTemplating/MonoDevelop.TextTemplating/ProjectFileTemplatingHost.cs
index e416da68c6..5718f3ca6c 100644
--- a/main/src/addins/TextTemplating/MonoDevelop.TextTemplating/ProjectFileTemplatingHost.cs
+++ b/main/src/addins/TextTemplating/MonoDevelop.TextTemplating/ProjectFileTemplatingHost.cs
@@ -27,6 +27,7 @@
using MonoDevelop.Core;
using MonoDevelop.Core.StringParsing;
using MonoDevelop.Projects;
+using MonoDevelop.Ide;
namespace MonoDevelop.TextTemplating
{
@@ -46,5 +47,11 @@ namespace MonoDevelop.TextTemplating
var model = file.Project.GetStringTagModel (activeConfiguration);
return StringParserService.Parse (s, model);
}
+
+ protected override string ResolveAssemblyReference (string assemblyReference)
+ {
+ assemblyReference = StringParserService.Parse (assemblyReference, IdeApp.Workbench.GetStringTagModel ());
+ return base.ResolveAssemblyReference (assemblyReference);
+ }
}
}