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
- AsyncOperationManager.cs
- WindowsToolbar.cs
- NetMsmqSecurityElement.cs
- ColumnHeaderConverter.cs
- StylusSystemGestureEventArgs.cs
- SoapServerMessage.cs
- TearOffProxy.cs
- tooltip.cs
- DiscoveryReferences.cs
- QilGenerator.cs
- GraphicsContainer.cs
- OdbcConnectionString.cs
- MemoryMappedViewAccessor.cs
- SerializationObjectManager.cs
- ECDiffieHellmanCngPublicKey.cs
- DSASignatureDeformatter.cs
- WebPartDeleteVerb.cs
- RefreshEventArgs.cs
- _UriSyntax.cs
- XmlSchemaSimpleType.cs
- DecimalAverageAggregationOperator.cs
- MiniConstructorInfo.cs
- XPathBinder.cs
- AmbientProperties.cs
- ParseHttpDate.cs
- ResourceProperty.cs
- TextEditorTyping.cs
- CommonObjectSecurity.cs
- MenuItemStyle.cs
- GridToolTip.cs
- FontCollection.cs
- HwndSource.cs
- LocationUpdates.cs
- UIElementPropertyUndoUnit.cs
- TableParagraph.cs
- Int32EqualityComparer.cs
- CheckedPointers.cs
- UpdatableGenericsFeature.cs
- ByteStreamGeometryContext.cs
- GridView.cs
- TdsRecordBufferSetter.cs
- StringInfo.cs
- GroupBoxRenderer.cs
- ZipIOCentralDirectoryFileHeader.cs
- SoapTypeAttribute.cs
- InputProcessorProfiles.cs
- SpeechEvent.cs
- FilterQueryOptionExpression.cs
- BitArray.cs
- ColorTransformHelper.cs
- SQLBytes.cs
- CodeEntryPointMethod.cs
- RootBrowserWindow.cs
- Utility.cs
- PasswordTextContainer.cs
- KnownBoxes.cs
- ArrangedElementCollection.cs
- MimeReflector.cs
- MethodBuilder.cs
- SQLInt16.cs
- BrowserInteropHelper.cs
- LicenseContext.cs
- Interop.cs
- ExpressionPrefixAttribute.cs
- PointConverter.cs
- EndPoint.cs
- ViewGenResults.cs
- LayoutTable.cs
- TargetInvocationException.cs
- Function.cs
- EnvelopedSignatureTransform.cs
- MaskDescriptors.cs
- ExpandCollapsePatternIdentifiers.cs
- XPathNodeInfoAtom.cs
- MetadataSource.cs
- DuplicateWaitObjectException.cs
- DataGridViewLinkCell.cs
- WebUtil.cs
- RenamedEventArgs.cs
- WebBaseEventKeyComparer.cs
- LateBoundChannelParameterCollection.cs
- SqlFlattener.cs
- TextShapeableCharacters.cs
- DbDataRecord.cs
- FrameworkContentElement.cs
- XamlDesignerSerializationManager.cs
- FormsAuthenticationModule.cs
- SectionRecord.cs
- XamlFigureLengthSerializer.cs
- HttpCookie.cs
- AlphabeticalEnumConverter.cs
- StateMachineExecutionState.cs
- SinglePageViewer.cs
- RemotingAttributes.cs
- PEFileEvidenceFactory.cs
- ExpressionBindingCollection.cs
- MbpInfo.cs
- LogicalExpr.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs
- LinearKeyFrames.cs