diff options
Diffstat (limited to 'Mono.Cecil/ModuleDefinition.cs')
-rw-r--r-- | Mono.Cecil/ModuleDefinition.cs | 91 |
1 files changed, 59 insertions, 32 deletions
diff --git a/Mono.Cecil/ModuleDefinition.cs b/Mono.Cecil/ModuleDefinition.cs index aaaf244..fcbe10e 100644 --- a/Mono.Cecil/ModuleDefinition.cs +++ b/Mono.Cecil/ModuleDefinition.cs @@ -33,7 +33,7 @@ namespace Mono.Cecil { internal IMetadataResolver metadata_resolver; #if !READ_ONLY internal IMetadataImporterProvider metadata_importer_provider; -#if !CF +#if !PCL internal IReflectionImporterProvider reflection_importer_provider; #endif #endif @@ -62,7 +62,7 @@ namespace Mono.Cecil { set { metadata_importer_provider = value; } } -#if !CF +#if !PCL public IReflectionImporterProvider ReflectionImporterProvider { get { return reflection_importer_provider; } set { reflection_importer_provider = value; } @@ -107,7 +107,7 @@ namespace Mono.Cecil { IMetadataResolver metadata_resolver; #if !READ_ONLY IMetadataImporterProvider metadata_importer_provider; -#if !CF +#if !PCL IReflectionImporterProvider reflection_importer_provider; #endif #endif @@ -143,7 +143,7 @@ namespace Mono.Cecil { set { metadata_importer_provider = value; } } -#if !CF +#if !PCL public IReflectionImporterProvider ReflectionImporterProvider { get { return reflection_importer_provider; } set { reflection_importer_provider = value; } @@ -160,10 +160,11 @@ namespace Mono.Cecil { static TargetRuntime GetCurrentRuntime () { -#if !CF +#if !PCL return typeof (object).Assembly.ImageRuntimeVersion.ParseRuntime (); #else - var corlib_version = typeof (object).Assembly.GetName ().Version; + var corlib_name = AssemblyNameReference.Parse (typeof (object).Assembly.FullName); + var corlib_version = corlib_name.Version; switch (corlib_version.Major) { case 1: return corlib_version.Minor == 0 @@ -185,7 +186,7 @@ namespace Mono.Cecil { Stream symbol_stream; ISymbolWriterProvider symbol_writer_provider; bool write_symbols; -#if !SILVERLIGHT && !CF +#if !PCL SR.StrongNameKeyPair key_pair; #endif public Stream SymbolStream { @@ -202,7 +203,7 @@ namespace Mono.Cecil { get { return write_symbols; } set { write_symbols = value; } } -#if !SILVERLIGHT && !CF +#if !PCL public SR.StrongNameKeyPair StrongNameKeyPair { get { return key_pair; } set { key_pair = value; } @@ -239,7 +240,7 @@ namespace Mono.Cecil { MethodDefinition entry_point; #if !READ_ONLY -#if !CF +#if !PCL internal IReflectionImporter reflection_importer; #endif internal IMetadataImporter metadata_importer; @@ -321,7 +322,7 @@ namespace Mono.Cecil { } #if !READ_ONLY -#if !CF +#if !PCL internal IReflectionImporter ReflectionImporter { get { if (reflection_importer == null) @@ -343,8 +344,10 @@ namespace Mono.Cecil { public IAssemblyResolver AssemblyResolver { get { +#if !PCL if (assembly_resolver == null) Interlocked.CompareExchange (ref assembly_resolver, new DefaultAssemblyResolver (), null); +#endif return assembly_resolver; } @@ -649,16 +652,28 @@ namespace Mono.Cecil { internal FieldDefinition Resolve (FieldReference field) { +#if PCL + if (MetadataResolver == null) + throw new NotSupportedException (); +#endif return MetadataResolver.Resolve (field); } internal MethodDefinition Resolve (MethodReference method) { +#if PCL + if (MetadataResolver == null) + throw new NotSupportedException (); +#endif return MetadataResolver.Resolve (method); } internal TypeDefinition Resolve (TypeReference type) { +#if PCL + if (MetadataResolver == null) + throw new NotSupportedException (); +#endif return MetadataResolver.Resolve (type); } @@ -673,7 +688,7 @@ namespace Mono.Cecil { throw new ArgumentException (); } -#if !CF +#if !PCL [Obsolete ("Use ImportReference", error: false)] public TypeReference Import (Type type) @@ -944,7 +959,7 @@ namespace Mono.Cecil { #if !READ_ONLY if (parameters.MetadataImporterProvider != null) module.metadata_importer = parameters.MetadataImporterProvider.GetMetadataImporter (module); -#if !CF +#if !PCL if (parameters.ReflectionImporterProvider != null) module.reflection_importer = parameters.ReflectionImporterProvider.GetReflectionImporter (module); #endif @@ -972,6 +987,7 @@ namespace Mono.Cecil { #endif +#if !PCL public void ReadSymbols () { if (string.IsNullOrEmpty (fq_name)) @@ -983,6 +999,7 @@ namespace Mono.Cecil { ReadSymbols (provider.GetSymbolReader (this, fq_name)); } +#endif public void ReadSymbols (ISymbolReader reader) { @@ -994,21 +1011,39 @@ namespace Mono.Cecil { ProcessDebugHeader (); } +#if !PCL public static ModuleDefinition ReadModule (string fileName) { return ReadModule (fileName, new ReaderParameters (ReadingMode.Deferred)); } + public static ModuleDefinition ReadModule (string fileName, ReaderParameters parameters) + { + using (var stream = GetFileStream (fileName, FileMode.Open, FileAccess.Read, FileShare.Read)) { + return ReadModule (stream, parameters); + } + } + + static Stream GetFileStream (string fileName, FileMode mode, FileAccess access, FileShare share) + { + if (fileName == null) + throw new ArgumentNullException ("fileName"); + if (fileName.Length == 0) + throw new ArgumentException (); + + return new FileStream (fileName, mode, access, share); + } +#endif + public static ModuleDefinition ReadModule (Stream stream) { return ReadModule (stream, new ReaderParameters (ReadingMode.Deferred)); } - public static ModuleDefinition ReadModule (string fileName, ReaderParameters parameters) + static void CheckStream (object stream) { - using (var stream = GetFileStream (fileName, FileMode.Open, FileAccess.Read, FileShare.Read)) { - return ReadModule (stream, parameters); - } + if (stream == null) + throw new ArgumentNullException ("stream"); } public static ModuleDefinition ReadModule (Stream stream, ReaderParameters parameters) @@ -1023,34 +1058,26 @@ namespace Mono.Cecil { parameters); } - static Stream GetFileStream (string fileName, FileMode mode, FileAccess access, FileShare share) - { - if (fileName == null) - throw new ArgumentNullException ("fileName"); - if (fileName.Length == 0) - throw new ArgumentException (); - - return new FileStream (fileName, mode, access, share); - } - #if !READ_ONLY +#if !PCL public void Write (string fileName) { Write (fileName, new WriterParameters ()); } - public void Write (Stream stream) - { - Write (stream, new WriterParameters ()); - } - public void Write (string fileName, WriterParameters parameters) { using (var stream = GetFileStream (fileName, FileMode.Create, FileAccess.ReadWrite, FileShare.None)) { Write (stream, parameters); } } +#endif + + public void Write (Stream stream) + { + Write (stream, new WriterParameters ()); + } public void Write (Stream stream, WriterParameters parameters) { @@ -1125,7 +1152,7 @@ namespace Mono.Cecil { public static string GetFullyQualifiedName (this Stream self) { -#if !SILVERLIGHT +#if !PCL var file_stream = self as FileStream; if (file_stream == null) return string.Empty; |