提交 13ecd496 编写于 作者: J Jared Parsons

Respond to PR feedback

上级 7a2cca0b
......@@ -361,5 +361,30 @@ internal static DateTime GetFileTimeStamp(string fullPath)
throw new IOException(e.Message);
}
}
internal static Stream OpenFileStream(string path)
{
try
{
return PortableShim.File.OpenRead(path);
}
catch (ArgumentException)
{
throw;
}
catch (IOException e)
{
if (e.GetType().Name == "DirectoryNotFoundException")
{
throw new FileNotFoundException(e.Message, path, e);
}
throw;
}
catch (Exception e)
{
throw new IOException(e.Message, e);
}
}
}
}
......@@ -228,7 +228,7 @@ public MetadataReference WithProperties(MetadataReferenceProperties properties)
MetadataReferenceProperties properties = default(MetadataReferenceProperties),
DocumentationProvider documentation = null)
{
var peStream = PortableShim.File.OpenRead(path);
var peStream = FileUtilities.OpenFileStream(path);
// prefetch image, close stream to avoid locking it:
var module = ModuleMetadata.CreateFromStream(peStream, PEStreamOptions.PrefetchEntireImage);
......@@ -295,7 +295,7 @@ public static MetadataReference CreateFromAssembly(Assembly assembly)
}
string location = AssemblyLocationLightUp.GetAssemblyLocation(assembly);
Stream peStream = PortableShim.File.OpenRead(location);
Stream peStream = FileUtilities.OpenFileStream(location);
// The file is locked by the CLR assembly loader, so we can create a lazily read metadata,
// which might also lock the file until the reference is GC'd.
......
......@@ -186,7 +186,7 @@ public static ModuleMetadata CreateFromStream(Stream peStream, PEStreamOptions o
/// <exception cref="NotSupportedException">Reading from a file path is not supported by the platform.</exception>
public static ModuleMetadata CreateFromFile(string path)
{
return CreateFromStream(PortableShim.File.OpenRead(path));
return CreateFromStream(FileUtilities.OpenFileStream(path));
}
/// <summary>
......
......@@ -259,7 +259,7 @@ internal static class FileStream
internal const string TypeName = "System.IO.FileStream";
internal static readonly Type Type = ReflectionUtil.GetTypeFromEither(
contractName: $"${TypeName}, ${CoreNames.System_IO_FileSystem}",
contractName: $"{TypeName}, {CoreNames.System_IO_FileSystem}",
desktopName: TypeName);
internal static readonly PropertyInfo Name = Type
......@@ -347,7 +347,7 @@ internal static class Thread
internal const string TypeName = "System.Threading.Thread";
internal static readonly Type Type = ReflectionUtil.GetTypeFromEither(
contractName: $"${TypeName}, ${CoreNames.System_Threading_Thread}",
contractName: $"{TypeName}, {CoreNames.System_Threading_Thread}",
desktopName: TypeName);
internal static readonly PropertyInfo CurrentThread = Type
......@@ -364,7 +364,7 @@ internal static class RuntimeHelpers
internal const string TypeName = "System.Runtime.CompilerServices.RuntimeHelpers";
internal static readonly Type Type = ReflectionUtil.GetTypeFromEither(
contractName: $"${TypeName}, ${CoreNames.System_Runtime}",
contractName: $"{TypeName}, {CoreNames.System_Runtime}",
desktopName: TypeName);
internal static readonly Action EnsureSufficientExecutionStack = Type
......@@ -399,8 +399,8 @@ internal static class Extensions
internal const string TypeName = "System.Xml.XPath.Extensions";
internal static readonly Type Type = ReflectionUtil.GetTypeFromEither(
contractName: $"${TypeName}, ${CoreNames.System_Runtime}",
desktopName: $"${TypeName}, ${DesktopNames.System_Xml_Linq}");
contractName: $"{TypeName}, {CoreNames.System_Runtime}",
desktopName: $"{TypeName}, {DesktopNames.System_Xml_Linq}");
internal static readonly Func<XNode, string, IEnumerable<XElement>> XPathSelectElements = Type
.GetTypeInfo()
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册