Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- EastAsianLunisolarCalendar.cs
- GridToolTip.cs
- ChildDocumentBlock.cs
- ReferenceTypeElement.cs
- HotCommands.cs
- ContextDataSourceView.cs
- ServiceBehaviorElement.cs
- StringCollectionEditor.cs
- StylusPointPropertyUnit.cs
- WebHostScriptMappingsInstallComponent.cs
- RegexStringValidatorAttribute.cs
- Underline.cs
- IncrementalReadDecoders.cs
- ConvertEvent.cs
- XsltQilFactory.cs
- Opcode.cs
- ThreadInterruptedException.cs
- HybridDictionary.cs
- FigureHelper.cs
- ExtendedPropertyDescriptor.cs
- X509CertificateStore.cs
- SecondaryIndexList.cs
- DataGridViewLinkCell.cs
- Document.cs
- CancelEventArgs.cs
- EmbeddedMailObjectsCollection.cs
- CodeComment.cs
- ProcessThread.cs
- FactoryRecord.cs
- XmlTextReaderImplHelpers.cs
- X509RecipientCertificateClientElement.cs
- AnonymousIdentificationModule.cs
- ListControlConvertEventArgs.cs
- COM2PictureConverter.cs
- RouteParameter.cs
- DataServiceCollectionOfT.cs
- RegexMatch.cs
- DataGridTableStyleMappingNameEditor.cs
- XmlReflectionImporter.cs
- TdsParserHelperClasses.cs
- XmlValueConverter.cs
- EntityCommandDefinition.cs
- MexHttpsBindingElement.cs
- IPEndPointCollection.cs
- MetricEntry.cs
- RenderData.cs
- SingleConverter.cs
- SignerInfo.cs
- VariantWrapper.cs
- EventRoute.cs
- TdsRecordBufferSetter.cs
- ParallelTimeline.cs
- EditorZone.cs
- XmlComplianceUtil.cs
- Buffer.cs
- Task.cs
- FacetDescriptionElement.cs
- PointAnimationUsingPath.cs
- ParameterBuilder.cs
- LeftCellWrapper.cs
- CollectionsUtil.cs
- ConvertEvent.cs
- FilteredDataSetHelper.cs
- TableCellCollection.cs
- ConnectionDemuxer.cs
- RemotingHelper.cs
- GroupBox.cs
- SafeFindHandle.cs
- ExeContext.cs
- IISMapPath.cs
- ExpressionBindingCollection.cs
- MediaContextNotificationWindow.cs
- StoreContentChangedEventArgs.cs
- FieldDescriptor.cs
- DrawingState.cs
- WMIGenerator.cs
- HttpFileCollection.cs
- PostBackOptions.cs
- XmlSchemaComplexContent.cs
- MenuAdapter.cs
- BamlResourceContent.cs
- RegularExpressionValidator.cs
- TextEndOfLine.cs
- ObjectDataSourceChooseTypePanel.cs
- EntityDataSourceReferenceGroup.cs
- Serializer.cs
- OutputCacheSettings.cs
- ArrayConverter.cs
- ProxyWebPartManager.cs
- TableFieldsEditor.cs
- TraceSource.cs
- IApplicationTrustManager.cs
- ConstraintManager.cs
- InputLanguageProfileNotifySink.cs
- JumpItem.cs
- BuildProviderUtils.cs
- StandardCommands.cs
- SQLChars.cs
- EntityCommand.cs
- TypeTypeConverter.cs