Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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.
//
//-----------------------------------------------------------------------------
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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Literal.cs
- TitleStyle.cs
- WorkflowMarkupSerializerMapping.cs
- PenContext.cs
- ServicePoint.cs
- XmlBinaryWriter.cs
- StringStorage.cs
- BamlBinaryReader.cs
- DataControlField.cs
- NameValueCollection.cs
- TypedTableBase.cs
- ExtensibleClassFactory.cs
- WindowsGrip.cs
- ProfileSettings.cs
- XMLSchema.cs
- EasingKeyFrames.cs
- EntityDataSourceView.cs
- MetadataArtifactLoaderComposite.cs
- ControlIdConverter.cs
- TransmissionStrategy.cs
- CachedTypeface.cs
- LongValidator.cs
- XPathDescendantIterator.cs
- TreeViewItemAutomationPeer.cs
- PassportAuthentication.cs
- Atom10FormatterFactory.cs
- HttpProcessUtility.cs
- DataRelationCollection.cs
- XmlChoiceIdentifierAttribute.cs
- ToolStripPanelSelectionGlyph.cs
- RegexRunner.cs
- PropertyBuilder.cs
- ToolBar.cs
- ClientScriptItemCollection.cs
- AsyncOperationManager.cs
- DbConnectionPoolGroupProviderInfo.cs
- NTAccount.cs
- ErrorFormatter.cs
- ToolTip.cs
- EventLogPermissionAttribute.cs
- TaskExceptionHolder.cs
- SmiXetterAccessMap.cs
- LinearKeyFrames.cs
- IncomingWebResponseContext.cs
- NameNode.cs
- HtmlShimManager.cs
- ZipIOCentralDirectoryBlock.cs
- Soap.cs
- ResourceProviderFactory.cs
- TiffBitmapDecoder.cs
- SchemaImporterExtensionElement.cs
- BridgeDataReader.cs
- LinkArea.cs
- GeneralTransformGroup.cs
- XmlConvert.cs
- TableCell.cs
- StylusPlugin.cs
- XmlSchemaGroupRef.cs
- IInstanceContextProvider.cs
- OleDbEnumerator.cs
- DataGridCellsPresenter.cs
- ValidationPropertyAttribute.cs
- PropertyPushdownHelper.cs
- SqlDataSourceQueryEditorForm.cs
- GradientStop.cs
- InfoCardTraceRecord.cs
- ObsoleteAttribute.cs
- GridLengthConverter.cs
- HashHelper.cs
- Underline.cs
- VisemeEventArgs.cs
- SystemInfo.cs
- ProcessModuleCollection.cs
- ListBase.cs
- CodeTypeParameterCollection.cs
- ClientSettings.cs
- X509Utils.cs
- Variable.cs
- BufferBuilder.cs
- PolicyAssertionCollection.cs
- StrokeCollectionDefaultValueFactory.cs
- UserUseLicenseDictionaryLoader.cs
- EntityObject.cs
- localization.cs
- Exceptions.cs
- AttributedMetaModel.cs
- WindowsTab.cs
- EventDescriptor.cs
- TransformDescriptor.cs
- ColorTranslator.cs
- log.cs
- messageonlyhwndwrapper.cs
- HttpVersion.cs
- CacheVirtualItemsEvent.cs
- EndOfStreamException.cs
- SharedUtils.cs
- CodeConditionStatement.cs
- MissingManifestResourceException.cs
- AccessControlList.cs
- UnionExpr.cs