summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Build.Tasks
diff options
context:
space:
mode:
authorStephane Delcroix <stephane@delcroix.org>2017-02-06 09:33:18 +0100
committerGitHub <noreply@github.com>2017-02-06 09:33:18 +0100
commitbfb5de5676fd08059d4c86402ab89e7fa2376bd9 (patch)
tree55478e219bd4e728f22e02ac2877962537680623 /Xamarin.Forms.Build.Tasks
parent5af224a1e7679a618149ecac2aa0d8b7eb6cb629 (diff)
downloadxamarin-forms-bfb5de5676fd08059d4c86402ab89e7fa2376bd9.tar.gz
xamarin-forms-bfb5de5676fd08059d4c86402ab89e7fa2376bd9.tar.bz2
xamarin-forms-bfb5de5676fd08059d4c86402ab89e7fa2376bd9.zip
[XamlC] support portable pdb (#726)
Diffstat (limited to 'Xamarin.Forms.Build.Tasks')
-rw-r--r--Xamarin.Forms.Build.Tasks/DebugXamlCTask.cs4
-rw-r--r--Xamarin.Forms.Build.Tasks/XamlCTask.cs6
-rw-r--r--Xamarin.Forms.Build.Tasks/XamlTask.cs52
3 files changed, 56 insertions, 6 deletions
diff --git a/Xamarin.Forms.Build.Tasks/DebugXamlCTask.cs b/Xamarin.Forms.Build.Tasks/DebugXamlCTask.cs
index 1c7acac4..d356c9c6 100644
--- a/Xamarin.Forms.Build.Tasks/DebugXamlCTask.cs
+++ b/Xamarin.Forms.Build.Tasks/DebugXamlCTask.cs
@@ -46,7 +46,7 @@ namespace Xamarin.Forms.Build.Tasks
using (var assemblyDefinition = AssemblyDefinition.ReadAssembly(Assembly, new ReaderParameters {
ReadWrite = true,
ReadSymbols = DebugSymbols,
- SymbolReaderProvider = System.Type.GetType("Mono.Runtime") != null ? ((ISymbolReaderProvider)(new MdbReaderProvider())) : ((ISymbolReaderProvider)new PdbReaderProvider()),
+ SymbolReaderProvider = GetSymbolReaderProvider(Assembly, DebugSymbols),
AssemblyResolver = resolver
})) {
foreach (var module in assemblyDefinition.Modules) {
@@ -146,7 +146,7 @@ namespace Xamarin.Forms.Build.Tasks
}
Logger.LogString(1, "Writing the assembly... ");
assemblyDefinition.Write(new WriterParameters {
- SymbolWriterProvider = System.Type.GetType("Mono.Runtime") != null ? ((ISymbolWriterProvider)(new MdbWriterProvider())) : ((ISymbolWriterProvider)new MdbWriterProvider()),
+ SymbolWriterProvider = GetSymbolWriterProvider(Assembly, DebugSymbols),
WriteSymbols = DebugSymbols
});
}
diff --git a/Xamarin.Forms.Build.Tasks/XamlCTask.cs b/Xamarin.Forms.Build.Tasks/XamlCTask.cs
index 051eac0f..d014d059 100644
--- a/Xamarin.Forms.Build.Tasks/XamlCTask.cs
+++ b/Xamarin.Forms.Build.Tasks/XamlCTask.cs
@@ -5,8 +5,6 @@ using System.Linq;
using Mono.Cecil;
using Mono.Cecil.Cil;
-using Mono.Cecil.Mdb;
-using Mono.Cecil.Pdb;
using Xamarin.Forms.Xaml;
@@ -74,7 +72,7 @@ namespace Xamarin.Forms.Build.Tasks
AssemblyResolver = resolver,
ReadWrite = !ReadOnly,
ReadSymbols = DebugSymbols,
- SymbolReaderProvider = DebugSymbols ? (System.Type.GetType("Mono.Runtime") != null ? ((ISymbolReaderProvider)(new MdbReaderProvider())) : ((ISymbolReaderProvider)new PdbReaderProvider())) : null,
+ SymbolReaderProvider = GetSymbolReaderProvider(Assembly, DebugSymbols),
};
using (var assemblyDefinition = AssemblyDefinition.ReadAssembly(Path.GetFullPath(Assembly),readerParameters)) {
@@ -228,7 +226,7 @@ namespace Xamarin.Forms.Build.Tasks
try {
assemblyDefinition.Write(new WriterParameters {
WriteSymbols = DebugSymbols,
- SymbolWriterProvider = DebugSymbols ? (System.Type.GetType("Mono.Runtime") != null ? ((ISymbolWriterProvider)(new MdbWriterProvider())) : ((ISymbolWriterProvider)new MdbWriterProvider())): null,
+ SymbolWriterProvider = GetSymbolWriterProvider(Assembly, DebugSymbols),
});
Logger.LogLine(1, "done.");
} catch (Exception e) {
diff --git a/Xamarin.Forms.Build.Tasks/XamlTask.cs b/Xamarin.Forms.Build.Tasks/XamlTask.cs
index 0456d9f3..9bfc87cf 100644
--- a/Xamarin.Forms.Build.Tasks/XamlTask.cs
+++ b/Xamarin.Forms.Build.Tasks/XamlTask.cs
@@ -11,6 +11,8 @@ using Mono.Cecil;
using Xamarin.Forms.Xaml;
using Mono.Cecil.Cil;
+using Mono.Cecil.Pdb;
+using Mono.Cecil.Mdb;
namespace Xamarin.Forms.Build.Tasks
{
@@ -58,6 +60,56 @@ namespace Xamarin.Forms.Build.Tasks
}
return rootnode;
}
+
+ protected static ISymbolReaderProvider GetSymbolReaderProvider(string moduleFileName, bool debugSymbols)
+ {
+ if (!debugSymbols)
+ return null;
+
+ var pdb_name = GetPdbFileName(moduleFileName);
+ if (File.Exists(pdb_name)) {
+ // TODO: check mvid match
+ return new PdbReaderProvider();
+ }
+
+ var mdb_name = GetMdbFileName(moduleFileName);
+ if (File.Exists(mdb_name)) {
+ // TODO: check mvid match
+ return new MdbReaderProvider();
+ }
+
+ return null;
+ }
+
+ protected static ISymbolWriterProvider GetSymbolWriterProvider(string moduleFileName, bool debugSymbols)
+ {
+ if (!debugSymbols)
+ return null;
+
+ var pdb_name = GetPdbFileName(moduleFileName);
+ if (File.Exists(pdb_name)) {
+ // TODO: check mvid match
+ return new PdbWriterProvider();
+ }
+
+ var mdb_name = GetMdbFileName(moduleFileName);
+ if (File.Exists(mdb_name)) {
+ // TODO: check mvid match
+ return new MdbWriterProvider();
+ }
+
+ return null;
+ }
+
+ static string GetPdbFileName(string assemblyFileName)
+ {
+ return Path.ChangeExtension(assemblyFileName, ".pdb");
+ }
+
+ static string GetMdbFileName(string assemblyFileName)
+ {
+ return assemblyFileName + ".mdb";
+ }
}
static class CecilExtensions