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
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- EventLogPermissionAttribute.cs
- MatrixCamera.cs
- TextMarkerSource.cs
- ProtocolElement.cs
- ReadOnlyKeyedCollection.cs
- ResourcesBuildProvider.cs
- RegisteredArrayDeclaration.cs
- KoreanCalendar.cs
- PeerCollaborationPermission.cs
- DesignerDeviceConfig.cs
- Matrix.cs
- ColorConverter.cs
- PrintControllerWithStatusDialog.cs
- FlowNode.cs
- Buffer.cs
- ProfileEventArgs.cs
- MsmqTransportSecurityElement.cs
- BooleanKeyFrameCollection.cs
- CodeMethodReturnStatement.cs
- TextTreeText.cs
- FilteredXmlReader.cs
- FilterException.cs
- NameScope.cs
- XPathNodeIterator.cs
- GroupBox.cs
- ViewKeyConstraint.cs
- DataServices.cs
- SchemaNames.cs
- UndoManager.cs
- Trace.cs
- SafeEventLogWriteHandle.cs
- WindowAutomationPeer.cs
- TimeoutValidationAttribute.cs
- NodeLabelEditEvent.cs
- CompositeDataBoundControl.cs
- PrinterUnitConvert.cs
- MulticastNotSupportedException.cs
- FloaterParagraph.cs
- DataRelationPropertyDescriptor.cs
- ConcurrentDictionary.cs
- StrokeRenderer.cs
- RawTextInputReport.cs
- AutoCompleteStringCollection.cs
- wmiprovider.cs
- DataGridView.cs
- DataControlFieldHeaderCell.cs
- _AutoWebProxyScriptWrapper.cs
- PageThemeParser.cs
- FrugalList.cs
- Region.cs
- MessageEventSubscriptionService.cs
- ProjectionCamera.cs
- Keyboard.cs
- RelatedEnd.cs
- PrintEvent.cs
- InputProcessorProfilesLoader.cs
- TextElementEditingBehaviorAttribute.cs
- altserialization.cs
- ZoneButton.cs
- NativeWindow.cs
- GridViewAutomationPeer.cs
- DetailsViewDeleteEventArgs.cs
- TcpTransportSecurityElement.cs
- Bitmap.cs
- ImageSource.cs
- StringFreezingAttribute.cs
- GPPOINTF.cs
- Transform3D.cs
- HttpCacheVaryByContentEncodings.cs
- FontFamilyValueSerializer.cs
- WindowManager.cs
- PageHandlerFactory.cs
- DbBuffer.cs
- SqlXml.cs
- Brushes.cs
- ResolveResponseInfo.cs
- Grid.cs
- GeneralTransformGroup.cs
- ChannelTracker.cs
- TabControlEvent.cs
- VScrollProperties.cs
- ActionMessageFilterTable.cs
- EntitySqlQueryState.cs
- NotFiniteNumberException.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- TrackingSection.cs
- LinqDataSourceStatusEventArgs.cs
- DBCommandBuilder.cs
- DodSequenceMerge.cs
- ModelPropertyDescriptor.cs
- ActivityPropertyReference.cs
- InputBuffer.cs
- MDIWindowDialog.cs
- SqlBulkCopyColumnMapping.cs
- TransactionScopeDesigner.cs
- ExtendedPropertyDescriptor.cs
- RouteValueDictionary.cs
- mediapermission.cs
- RepeaterItem.cs