Skip to content

Instantly share code, notes, and snippets.

@marek-safar
Created April 11, 2012 19:10
Show Gist options
  • Save marek-safar/2361500 to your computer and use it in GitHub Desktop.
Save marek-safar/2361500 to your computer and use it in GitHub Desktop.
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp/CSharpBindingCompilerManager.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp/CSharpBindingCompilerManager.cs
index 45ca0b6..164b02e 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp/CSharpBindingCompilerManager.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp/CSharpBindingCompilerManager.cs
@@ -288,8 +288,22 @@ namespace MonoDevelop.CSharp
monitor.ReportError (message, e);
return null;
}
+
+ string corlibRef = "";
+ if (!compilerParameters.NoStdLib) {
+ if (compilerName == "mcs" && !project.TargetFramework.Id.Equals (TargetFrameworkMoniker.NET_1_1)) {
+ string corlib = project.AssemblyContext.GetAssemblyFullName ("mscorlib", project.TargetFramework);
+ if (corlib != null) {
+ corlib = project.AssemblyContext.GetAssemblyLocation (corlib, project.TargetFramework);
+ if (corlib != null && !alreadyAddedReference.Contains (corlib))
+ corlibRef = " \"/r:" + corlib + "\" ";
+
+ sb.AppendLine ("-nostdlib");
+ }
+ }
+ }
- monitor.Log.WriteLine (compilerName + " /noconfig " + sb.ToString ().Replace ('\n',' '));
+ monitor.Log.WriteLine (compilerName + " /noconfig " + corlibRef + sb.ToString ().Replace ('\n',' '));
string workingDir = ".";
if (configuration.ParentItem != null) {
diff --git a/main/src/core/Mono.Debugging/Mono.Debugging.Evaluation/NRefactoryEvaluator.cs b/main/src/core/Mono.Debugging/Mono.Debugging.Evaluation/NRefactoryEvaluator.cs
index 4b02675..22f6e5d 100644
--- a/main/src/core/Mono.Debugging/Mono.Debugging.Evaluation/NRefactoryEvaluator.cs
+++ b/main/src/core/Mono.Debugging/Mono.Debugging.Evaluation/NRefactoryEvaluator.cs
@@ -490,7 +490,7 @@ namespace Mono.Debugging.Evaluation
if (res != null)
return LiteralValueReference.CreateTargetObjectLiteral (ctx, name, res);
else
- return LiteralValueReference.CreateObjectLiteral (ctx, name, new EvaluationResult ("No return value."));
+ return LiteralValueReference.CreateTargetObjectLiteral (ctx, name, new EvaluationResult ("No return value."));
}
public override object VisitInnerClassTypeReference (ICSharpCode.OldNRefactory.Ast.InnerClassTypeReference innerClassTypeReference, object data)
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/MonoFrameworkBackend.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/MonoFrameworkBackend.cs
index f20cc74..96065c9 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/MonoFrameworkBackend.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/MonoFrameworkBackend.cs
@@ -104,17 +104,35 @@ namespace MonoDevelop.Core.Assemblies
}
}
+
+ string GetMcsName (TargetFrameworkMoniker fx)
+ {
+ //old compilers for specific frameworks
+ if (fx.Identifier == TargetFrameworkMoniker.ID_NET_FRAMEWORK) {
+ switch (fx.Version) {
+ case "1.1":
+ return "mcs";
+ case "2.0":
+ case "3.0":
+ case "3.5":
+ return "gmcs";
+ case "4.0":
+ return "dmcs";
+ }
+ }
+
+ //moonlight, monotouch, mono for android
+ if (framework.ClrVersion == ClrVersion.Clr_2_1)
+ return "smcs";
+
+ //the new cecil-based compiler
+ return "mcs";
+ }
+
public override string GetToolPath (string toolName)
{
if (toolName == "csc" || toolName == "mcs") {
- if (framework.ClrVersion == ClrVersion.Net_1_1)
- toolName = "mcs";
- else if (framework.ClrVersion == ClrVersion.Net_2_0)
- toolName = "gmcs";
- else if (framework.ClrVersion == ClrVersion.Clr_2_1)
- toolName = "smcs";
- else if (framework.ClrVersion == ClrVersion.Net_4_0)
- toolName = "dmcs";
+ return GetMcsName (framework.Id);
}
else if (toolName == "vbc")
toolName = "vbnc";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment