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
- XmlSerializerAssemblyAttribute.cs
- EmptyQuery.cs
- AccessorTable.cs
- SourceSwitch.cs
- ReachFixedDocumentSerializer.cs
- ApplyImportsAction.cs
- SslStream.cs
- Menu.cs
- SqlBulkCopyColumnMapping.cs
- CrossSiteScriptingValidation.cs
- BitmapFrameDecode.cs
- PreviewPrintController.cs
- PageParser.cs
- StringUtil.cs
- TypeExtension.cs
- RouteParameter.cs
- UmAlQuraCalendar.cs
- KeyValueSerializer.cs
- InvalidProgramException.cs
- OpacityConverter.cs
- AttachedAnnotationChangedEventArgs.cs
- _NetworkingPerfCounters.cs
- HostingEnvironmentSection.cs
- DataTableNewRowEvent.cs
- XmlSchemaCompilationSettings.cs
- HMACRIPEMD160.cs
- DesignerActionMethodItem.cs
- ContextStack.cs
- SvcMapFileLoader.cs
- SourceSwitch.cs
- LambdaCompiler.cs
- remotingproxy.cs
- AsymmetricSignatureFormatter.cs
- IPAddressCollection.cs
- HttpContextWrapper.cs
- StrokeFIndices.cs
- TransformationRules.cs
- EventDescriptorCollection.cs
- Duration.cs
- CodeNamespace.cs
- MemoryMappedFileSecurity.cs
- cookiecontainer.cs
- GroupStyle.cs
- StackSpiller.Bindings.cs
- ToolStripOverflow.cs
- EntitySqlQueryState.cs
- DataGridToolTip.cs
- DataGridViewComboBoxCell.cs
- ScrollEvent.cs
- BindingManagerDataErrorEventArgs.cs
- dataSvcMapFileLoader.cs
- TextEndOfLine.cs
- WebExceptionStatus.cs
- TagPrefixAttribute.cs
- WebConfigurationHost.cs
- ConnectionConsumerAttribute.cs
- EditorPartCollection.cs
- LineBreakRecord.cs
- CursorInteropHelper.cs
- StandardToolWindows.cs
- QueryCreatedEventArgs.cs
- ProviderMetadataCachedInformation.cs
- FunctionNode.cs
- AppliesToBehaviorDecisionTable.cs
- SqlCrossApplyToCrossJoin.cs
- DataGridViewCellValueEventArgs.cs
- FixedSOMSemanticBox.cs
- ClaimTypeRequirement.cs
- DataGridViewRowEventArgs.cs
- EDesignUtil.cs
- RtType.cs
- DateTimeConverter2.cs
- ECDiffieHellmanPublicKey.cs
- ActiveXHost.cs
- StorageBasedPackageProperties.cs
- DependentList.cs
- RepeaterCommandEventArgs.cs
- ToolStripGrip.cs
- MatcherBuilder.cs
- AssociationSet.cs
- Message.cs
- HtmlPageAdapter.cs
- ReadContentAsBinaryHelper.cs
- ConfigViewGenerator.cs
- OneOfConst.cs
- DataGridViewRowsAddedEventArgs.cs
- COSERVERINFO.cs
- XmlLangPropertyAttribute.cs
- ToolStripScrollButton.cs
- XmlStreamStore.cs
- NetworkStream.cs
- ResourceContainer.cs
- XmlAttribute.cs
- PageEventArgs.cs
- MetafileHeaderEmf.cs
- TemplateControlParser.cs
- GetImportFileNameRequest.cs
- DocumentGrid.cs
- BindingListCollectionView.cs
- SQLSingleStorage.cs