Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / Compilation / PreservationFileWriter.cs / 1 / PreservationFileWriter.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.Compilation {
using System;
using System.IO;
using System.Collections;
using System.Globalization;
using System.Text;
using System.Xml;
using System.Web.Util;
using System.Web.UI;
internal class PreservationFileWriter {
private XmlTextWriter _writer;
private bool _precompilationMode;
internal const string fileDependenciesTagName = "filedeps";
internal const string fileDependencyTagName = "filedep";
internal const string buildResultDependenciesTagName = "builddeps";
internal const string buildResultDependencyTagName = "builddep";
internal PreservationFileWriter(bool precompilationMode) {
_precompilationMode = precompilationMode;
}
internal void SaveBuildResultToFile(string preservationFile,
BuildResult result, long hashCode) {
_writer = new XmlTextWriter(preservationFile, Encoding.UTF8);
try {
_writer.Formatting = Formatting.Indented;
_writer.Indentation = 4;
_writer.WriteStartDocument();
//
_writer.WriteStartElement("preserve");
// Save the type of BuildResult we're dealing with
Debug.Assert(result.GetCode() != BuildResultTypeCode.Invalid);
SetAttribute("resultType", ((int)result.GetCode()).ToString(CultureInfo.InvariantCulture));
// Save the virtual path for this BuildResult
if (result.VirtualPath != null)
SetAttribute("virtualPath", result.VirtualPath.VirtualPathString);
// Get the hash code of the BuildResult
long hash = result.ComputeHashCode(hashCode);
// The hash should always be valid if we got here.
Debug.Assert(hash != 0, "hash != 0");
// Save it to the preservation file
SetAttribute("hash", hash.ToString("x", CultureInfo.InvariantCulture));
// Can be null if that's what the VirtualPathProvider returns
string fileHash = result.VirtualPathDependenciesHash;
if (fileHash != null)
SetAttribute("filehash", fileHash);
result.SetPreservedAttributes(this);
SaveDependencies(result.VirtualPathDependencies);
//
_writer.WriteEndElement();
_writer.WriteEndDocument();
_writer.Close();
}
catch {
// If an exception occurs during the writing of the xml file, clean it up
_writer.Close();
File.Delete(preservationFile);
throw;
}
}
private void SaveDependencies(ICollection dependencies) {
// Write all the dependencies
if (dependencies != null) {
//
_writer.WriteStartElement(fileDependenciesTagName);
foreach (string vpath in dependencies) {
// e.g.
_writer.WriteStartElement(fileDependencyTagName);
_writer.WriteAttributeString("name", vpath);
_writer.WriteEndElement();
}
//
_writer.WriteEndElement();
}
}
internal void SetAttribute(string name, string value) {
_writer.WriteAttributeString(name, value);
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SimpleRecyclingCache.cs
- PreloadedPackages.cs
- ReadOnlyDictionary.cs
- Win32SafeHandles.cs
- XmlFileEditor.cs
- QuotedPrintableStream.cs
- _BaseOverlappedAsyncResult.cs
- PrinterUnitConvert.cs
- ToolStripLabel.cs
- MetaChildrenColumn.cs
- FormsAuthenticationModule.cs
- ActivityDesignerLayoutSerializers.cs
- TextSearch.cs
- RequestQueryProcessor.cs
- LinqDataSourceValidationException.cs
- XmlChildEnumerator.cs
- DataControlLinkButton.cs
- BamlResourceDeserializer.cs
- DataTablePropertyDescriptor.cs
- Reference.cs
- MobileDeviceCapabilitiesSectionHandler.cs
- Zone.cs
- WindowsFormsHost.cs
- InstanceDataCollectionCollection.cs
- CatalogPart.cs
- JavascriptCallbackResponseProperty.cs
- CollectionConverter.cs
- DBCSCodePageEncoding.cs
- TimeManager.cs
- CancellationHandler.cs
- DataObjectAttribute.cs
- AttributeCollection.cs
- FilteredDataSetHelper.cs
- ScrollProviderWrapper.cs
- SQLBinaryStorage.cs
- HttpCachePolicyElement.cs
- SiteMapDataSource.cs
- XmlUtf8RawTextWriter.cs
- DateTimeOffsetConverter.cs
- DesignTimeTemplateParser.cs
- FilterableAttribute.cs
- SamlAuthenticationStatement.cs
- QuaternionAnimationBase.cs
- SiteMapPathDesigner.cs
- MarshalByRefObject.cs
- AutomationPeer.cs
- SqlDataRecord.cs
- Matrix3DConverter.cs
- util.cs
- Codec.cs
- ResourcePropertyMemberCodeDomSerializer.cs
- UidManager.cs
- CompareValidator.cs
- AnnotationResourceCollection.cs
- XmlSchemaExternal.cs
- TextRunCache.cs
- TrackingExtract.cs
- SqlBuffer.cs
- ServiceProviders.cs
- OleDbEnumerator.cs
- ResourceDisplayNameAttribute.cs
- AttributeInfo.cs
- ProcessManager.cs
- BamlRecordReader.cs
- Separator.cs
- SlipBehavior.cs
- Rect3D.cs
- InvalidComObjectException.cs
- ProfileSection.cs
- TextSelectionHelper.cs
- DBDataPermission.cs
- InvalidateEvent.cs
- HttpListenerResponse.cs
- _LazyAsyncResult.cs
- formatstringdialog.cs
- ThreadLocal.cs
- TextElementEditingBehaviorAttribute.cs
- SqlCacheDependencySection.cs
- XmlnsDictionary.cs
- DebugView.cs
- DispatchWrapper.cs
- nulltextcontainer.cs
- SendKeys.cs
- InvalidOleVariantTypeException.cs
- DbConnectionPoolGroupProviderInfo.cs
- Line.cs
- ResourceReferenceExpressionConverter.cs
- Decimal.cs
- ContextMenuService.cs
- x509store.cs
- ToolStripSplitButton.cs
- KeyValuePairs.cs
- SqlCommand.cs
- StyleSelector.cs
- ToolStripGripRenderEventArgs.cs
- AtomServiceDocumentSerializer.cs
- RelationalExpressions.cs
- MenuScrollingVisibilityConverter.cs
- CheckBoxRenderer.cs
- StreamReader.cs