Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / 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);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
//
// 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);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CustomErrorsSection.cs
- HitTestWithGeometryDrawingContextWalker.cs
- IconHelper.cs
- Brush.cs
- StreamSecurityUpgradeProvider.cs
- ClonableStack.cs
- WindowsTab.cs
- HttpModulesSection.cs
- ContainerParaClient.cs
- Win32.cs
- RelationshipFixer.cs
- ErrorInfoXmlDocument.cs
- AutomationEvent.cs
- EllipseGeometry.cs
- DocumentViewerConstants.cs
- TextRangeBase.cs
- CodeGenerator.cs
- UnsafePeerToPeerMethods.cs
- Span.cs
- HandlerMappingMemo.cs
- OpenFileDialog.cs
- PrivilegeNotHeldException.cs
- _ListenerResponseStream.cs
- InputReport.cs
- TextEditorTables.cs
- GridViewItemAutomationPeer.cs
- ObjectDataSourceDisposingEventArgs.cs
- MatrixKeyFrameCollection.cs
- BitmapEffectInputData.cs
- DynamicValidatorEventArgs.cs
- NetworkInformationPermission.cs
- Triplet.cs
- UserControlCodeDomTreeGenerator.cs
- WeakReferenceEnumerator.cs
- NameTable.cs
- FontFamily.cs
- SqlColumnizer.cs
- ClientRuntimeConfig.cs
- MsdtcClusterUtils.cs
- MetadataArtifactLoaderResource.cs
- ProjectionCamera.cs
- Matrix3D.cs
- ElementMarkupObject.cs
- CodeBinaryOperatorExpression.cs
- SafeMILHandleMemoryPressure.cs
- DesignerSerializerAttribute.cs
- FigureParagraph.cs
- DataListItemCollection.cs
- XmlQueryType.cs
- MouseGesture.cs
- AssociationSet.cs
- GetPageNumberCompletedEventArgs.cs
- X509CertificateInitiatorServiceCredential.cs
- QuotedPrintableStream.cs
- GridViewSortEventArgs.cs
- GcHandle.cs
- SourceItem.cs
- BooleanExpr.cs
- ToolZone.cs
- ProcessModelSection.cs
- WindowsServiceElement.cs
- TableLayoutCellPaintEventArgs.cs
- AsynchronousChannelMergeEnumerator.cs
- InvalidDataException.cs
- StringArrayConverter.cs
- Adorner.cs
- BigIntegerStorage.cs
- DragEvent.cs
- wgx_commands.cs
- ProfileService.cs
- TextTrailingWordEllipsis.cs
- EndPoint.cs
- TraceUtils.cs
- TypeElementCollection.cs
- ColumnCollectionEditor.cs
- SystemWebExtensionsSectionGroup.cs
- SqlSupersetValidator.cs
- SizeChangedInfo.cs
- SingleAnimation.cs
- AppDomainFactory.cs
- InheritanceAttribute.cs
- SyndicationItemFormatter.cs
- ListViewPagedDataSource.cs
- DragDeltaEventArgs.cs
- mda.cs
- TraceSource.cs
- IncrementalReadDecoders.cs
- Debugger.cs
- MILUtilities.cs
- FormCollection.cs
- NetworkInformationException.cs
- GraphicsPath.cs
- Stacktrace.cs
- DesignObjectWrapper.cs
- FileDetails.cs
- MarkerProperties.cs
- SystemFonts.cs
- DataKey.cs
- Console.cs
- EntityRecordInfo.cs