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
- DataSourceView.cs
- Translator.cs
- EventEntry.cs
- BezierSegment.cs
- BinaryWriter.cs
- HtmlElementCollection.cs
- EmptyEnumerator.cs
- WorkflowHostingEndpoint.cs
- XmlC14NWriter.cs
- ContractSearchPattern.cs
- OutOfProcStateClientManager.cs
- MemberMaps.cs
- ApplicationDirectoryMembershipCondition.cs
- RandomNumberGenerator.cs
- ProfilePropertySettingsCollection.cs
- ReferenceAssemblyAttribute.cs
- WebConfigurationManager.cs
- XmlSchemaValidationException.cs
- RbTree.cs
- DBConnection.cs
- AppDomainUnloadedException.cs
- SchemaDeclBase.cs
- FtpRequestCacheValidator.cs
- OperationPerformanceCounters.cs
- MulticastDelegate.cs
- tooltip.cs
- SharedPersonalizationStateInfo.cs
- TypeSystem.cs
- DispatchChannelSink.cs
- PropertyGridCommands.cs
- formatter.cs
- WebPartConnectionsCloseVerb.cs
- DataGridCaption.cs
- BooleanExpr.cs
- WCFBuildProvider.cs
- FontDriver.cs
- Point4DConverter.cs
- ExpressionBuilderCollection.cs
- DataBoundControlHelper.cs
- HashCodeCombiner.cs
- FtpCachePolicyElement.cs
- ConfigurationSchemaErrors.cs
- TemplateParser.cs
- ClientEventManager.cs
- AssertFilter.cs
- ListCollectionView.cs
- ReservationCollection.cs
- SQLCharsStorage.cs
- Style.cs
- ProcessHostMapPath.cs
- Pointer.cs
- OutputScopeManager.cs
- coordinatorfactory.cs
- TraceListener.cs
- XmlRawWriterWrapper.cs
- CachedPathData.cs
- PropertyTabChangedEvent.cs
- TreeViewEvent.cs
- PreProcessInputEventArgs.cs
- HwndSourceKeyboardInputSite.cs
- BStrWrapper.cs
- ColorKeyFrameCollection.cs
- HtmlForm.cs
- BindingList.cs
- XmlIlVisitor.cs
- ListSourceHelper.cs
- CodeParameterDeclarationExpression.cs
- SystemIPv6InterfaceProperties.cs
- LinkedResource.cs
- TrackingStringDictionary.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- HostedElements.cs
- WebProxyScriptElement.cs
- RSAPKCS1KeyExchangeFormatter.cs
- TypeForwardedFromAttribute.cs
- SchemaCollectionCompiler.cs
- TableProvider.cs
- WorkflowTimerService.cs
- DataControlImageButton.cs
- SqlClientWrapperSmiStreamChars.cs
- CqlWriter.cs
- TextParaClient.cs
- WrappedIUnknown.cs
- XmlAttributes.cs
- PropertyValueUIItem.cs
- DataSourceView.cs
- RSAPKCS1SignatureDeformatter.cs
- ColorAnimationBase.cs
- InternalControlCollection.cs
- ContainerVisual.cs
- ColorIndependentAnimationStorage.cs
- ActivityExecutionFilter.cs
- Hash.cs
- BitmapData.cs
- DataKey.cs
- MasterPageBuildProvider.cs
- TextEditorCharacters.cs
- WinInetCache.cs
- ObfuscationAttribute.cs
- Win32.cs