private static BinaryReader CreateReaderFromDisk(ResolvePackageAssets task, byte[] settingsHash) { Debug.Assert(!task.DisablePackageAssetsCache); BinaryReader reader = null; try { if (File.GetLastWriteTimeUtc(task.ProjectAssetsCacheFile) > File.GetLastWriteTimeUtc(task.ProjectAssetsFile)) { reader = OpenCacheFile(task.ProjectAssetsCacheFile, settingsHash); } } catch (IOException) { } catch (InvalidDataException) { } catch (UnauthorizedAccessException) { } if (reader == null) { using (var writer = new CacheWriter(task)) { writer.Write(); } reader = OpenCacheFile(task.ProjectAssetsCacheFile, settingsHash); } return(reader); }
public CacheReader(ResolvePackageAssets task) { byte[] settingsHash = task.HashSettings(); if (!task.DisablePackageAssetsCache) { // I/O errors can occur here if there are parallel calls to resolve package assets // for the same project configured with the same intermediate directory. This can // (for example) happen when design-time builds and real builds overlap. // // If there is an I/O error, then we fall back to the same in-memory approach below // as when DisablePackageAssetsCache is set to true. try { _reader = CreateReaderFromDisk(task, settingsHash); } catch (IOException) { } catch (UnauthorizedAccessException) { } } if (_reader == null) { _reader = CreateReaderFromMemory(task, settingsHash); } ReadMetadataStringTable(); }
public CacheReader(ResolvePackageAssets task) { byte[] settingsHash = task.HashSettings(); BinaryReader reader = null; try { if (File.GetLastWriteTimeUtc(task.ProjectAssetsCacheFile) > File.GetLastWriteTimeUtc(task.ProjectAssetsFile)) { reader = OpenCacheFile(task.ProjectAssetsCacheFile, settingsHash); } } catch (IOException) { } catch (InvalidDataException) { } catch (UnauthorizedAccessException) { } if (reader == null) { using (var writer = new CacheWriter(task)) { writer.Write(); } reader = OpenCacheFile(task.ProjectAssetsCacheFile, settingsHash); } _reader = reader; ReadMetadataStringTable(); }
private static BinaryReader CreateReaderFromMemory(ResolvePackageAssets task, byte[] settingsHash) { Debug.Assert(task.DisablePackageAssetsCache); var stream = new MemoryStream(); using (var writer = new CacheWriter(task, stream)) { writer.Write(); } stream.Position = 0; return(OpenCacheStream(stream, settingsHash)); }
public CacheReader(ResolvePackageAssets task) { byte[] settingsHash = task.HashSettings(); if (task.DisablePackageAssetsCache) { _reader = CreateReaderFromMemory(task, settingsHash); } else { _reader = CreateReaderFromDisk(task, settingsHash); } ReadMetadataStringTable(); }
private static BinaryReader CreateReaderFromMemory(ResolvePackageAssets task, byte[] settingsHash) { if (!task.DisablePackageAssetsCache) { task.Log.LogMessage(MessageImportance.High, Strings.UnableToUsePackageAssetsCache); } var stream = new MemoryStream(); using (var writer = new CacheWriter(task, stream)) { writer.Write(); } stream.Position = 0; return(OpenCacheStream(stream, settingsHash)); }