diff options
author | Lluis Sanchez <lluis@xamarin.com> | 2016-06-17 16:06:44 +0300 |
---|---|---|
committer | Lluis Sanchez <lluis@xamarin.com> | 2016-06-17 16:07:07 +0300 |
commit | ab6bdc969fd3cf361503d34e0fef51f6b1758332 (patch) | |
tree | 7238be86a9b25fdd1fd94fb809fc2d18598163c9 /main/src/core/MonoDevelop.Core | |
parent | 12daf1b4216f9d5c2c4c8813d13f33f704f5f9a1 (diff) |
[Core] MSBuild evaluation fix
Add support for creating strings using the property function "new".
Diffstat (limited to 'main/src/core/MonoDevelop.Core')
-rw-r--r-- | main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEvaluationContext.cs | 12 | ||||
-rw-r--r-- | main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs | 2 |
2 files changed, 8 insertions, 6 deletions
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEvaluationContext.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEvaluationContext.cs index f5789efd53..3341684d1a 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEvaluationContext.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEvaluationContext.cs @@ -439,7 +439,7 @@ namespace MonoDevelop.Projects.MSBuild return false; // Find a method with a matching number of parameters - var method = FindBestOverload (member.OfType<MethodInfo> (), parameterValues); + var method = FindBestOverload (member.OfType<MethodBase> (), parameterValues); if (method == null) return false; @@ -552,11 +552,11 @@ namespace MonoDevelop.Projects.MSBuild return false; } - MethodInfo FindBestOverload (IEnumerable<MethodInfo> methods, object [] args) + MethodBase FindBestOverload (IEnumerable<MethodBase> methods, object [] args) { - MethodInfo methodWithParams = null; + MethodBase methodWithParams = null; - foreach (var m in methods.OfType<MethodInfo> ()) { + foreach (var m in methods) { var argInfo = m.GetParameters (); // Exclude methods which take a complex object as argument @@ -580,7 +580,7 @@ namespace MonoDevelop.Projects.MSBuild return pi.ParameterType.IsArray && pi.IsDefined (typeof (ParamArrayAttribute)); } - object ConvertArg (MethodInfo method, int argNum, object value, Type parameterType) + object ConvertArg (MethodBase method, int argNum, object value, Type parameterType) { var sval = value as string; if (sval == "null") @@ -640,6 +640,8 @@ namespace MonoDevelop.Projects.MSBuild MemberInfo[] ResolveMember (Type type, string memberName, bool isStatic) { + if (type == typeof (string) && memberName == "new") + memberName = "Copy"; if (type.IsArray) type = typeof (Array); var flags = isStatic ? BindingFlags.Static : BindingFlags.Instance; diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs index 6855ff4d4a..cc15461374 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs @@ -482,7 +482,7 @@ namespace MonoDevelop.Projects return evaluatedCompileItemsTask.Task.Result; } - var dependsList = coreCompileDependsOn.Split (new [] { ";" }, StringSplitOptions.RemoveEmptyEntries); + var dependsList = coreCompileDependsOn.Split (new [] { ";" }, StringSplitOptions.RemoveEmptyEntries).Select (s => s.Trim ()).Where (s => s.Length > 0); foreach (var dependTarget in dependsList) { try { // evaluate the Compile targets |