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
- CustomTypeDescriptor.cs
- RelationshipDetailsRow.cs
- RewritingSimplifier.cs
- PreloadedPackages.cs
- HostedTcpTransportManager.cs
- AppSettingsExpressionBuilder.cs
- FillRuleValidation.cs
- CheckedListBox.cs
- HealthMonitoringSectionHelper.cs
- MatrixCamera.cs
- WebBrowserEvent.cs
- BamlVersionHeader.cs
- SessionMode.cs
- PenContexts.cs
- FormsAuthenticationConfiguration.cs
- WsdlWriter.cs
- SqlBulkCopyColumnMappingCollection.cs
- DelegateArgument.cs
- SerializationEventsCache.cs
- xdrvalidator.cs
- StyleXamlParser.cs
- HttpModuleActionCollection.cs
- WorkingDirectoryEditor.cs
- ModuleConfigurationInfo.cs
- DesignerObjectListAdapter.cs
- EvidenceBase.cs
- IListConverters.cs
- RijndaelManagedTransform.cs
- BinarySerializer.cs
- XmlObjectSerializerReadContextComplex.cs
- DataGridViewRowConverter.cs
- EmptyStringExpandableObjectConverter.cs
- SchemaTableColumn.cs
- CurrencyWrapper.cs
- PlaceHolder.cs
- DataGridAddNewRow.cs
- AssemblyAttributes.cs
- PinnedBufferMemoryStream.cs
- EmptyControlCollection.cs
- ActivityDesignerResources.cs
- FieldAccessException.cs
- TableItemPattern.cs
- InfoCardCryptoHelper.cs
- DataGridViewRowEventArgs.cs
- SaveFileDialog.cs
- ConfigurationException.cs
- CategoriesDocument.cs
- Helpers.cs
- NotifyParentPropertyAttribute.cs
- DataGridViewColumn.cs
- SchemaMerger.cs
- PointAnimationUsingKeyFrames.cs
- x509utils.cs
- AudioException.cs
- CheckedListBox.cs
- HorizontalAlignConverter.cs
- itemelement.cs
- UInt16.cs
- SettingsSection.cs
- SecureEnvironment.cs
- AdCreatedEventArgs.cs
- GeneralTransformGroup.cs
- ConnectionPoint.cs
- DataSourceHelper.cs
- SessionStateUtil.cs
- ConfigurationPropertyCollection.cs
- AlphabeticalEnumConverter.cs
- QueryOptionExpression.cs
- MsmqInputMessagePool.cs
- JpegBitmapDecoder.cs
- KnownTypeAttribute.cs
- InputReport.cs
- VersionPair.cs
- TdsParserSessionPool.cs
- ArglessEventHandlerProxy.cs
- SQLSingleStorage.cs
- ObjectReaderCompiler.cs
- XslCompiledTransform.cs
- AttributeSetAction.cs
- namescope.cs
- mactripleDES.cs
- Vector.cs
- ProtocolsConfigurationEntry.cs
- LocatorPartList.cs
- DrawingBrush.cs
- Dynamic.cs
- OfTypeExpression.cs
- HandlerBase.cs
- XmlDataImplementation.cs
- DbgCompiler.cs
- InputLanguageEventArgs.cs
- _NestedMultipleAsyncResult.cs
- UInt64Storage.cs
- TimeSpanValidatorAttribute.cs
- XmlSortKeyAccumulator.cs
- BaseDataList.cs
- ConsoleTraceListener.cs
- dbenumerator.cs
- DaylightTime.cs
- ButtonFieldBase.cs