Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- ConsoleCancelEventArgs.cs
- BasicDesignerLoader.cs
- ObjectTag.cs
- FillBehavior.cs
- XmlArrayAttribute.cs
- PathFigure.cs
- CodeAccessPermission.cs
- OleCmdHelper.cs
- SerializerWriterEventHandlers.cs
- UpWmlPageAdapter.cs
- JsonXmlDataContract.cs
- DataListItem.cs
- EncoderParameter.cs
- PathFigure.cs
- FontSourceCollection.cs
- MaskInputRejectedEventArgs.cs
- XmlBindingWorker.cs
- InfiniteTimeSpanConverter.cs
- ParallelEnumerable.cs
- Nullable.cs
- SoapExtensionTypeElementCollection.cs
- OLEDB_Util.cs
- ComponentSerializationService.cs
- _BaseOverlappedAsyncResult.cs
- ConfigDefinitionUpdates.cs
- UnsafeNativeMethods.cs
- IgnoreSection.cs
- DrawingContext.cs
- XamlTypeMapperSchemaContext.cs
- TaskExceptionHolder.cs
- XsltSettings.cs
- SmiEventSink_Default.cs
- InfoCardSymmetricCrypto.cs
- ErrorHandler.cs
- ObjectManager.cs
- HtmlTernaryTree.cs
- SQLResource.cs
- MapPathBasedVirtualPathProvider.cs
- StateMachineWorkflow.cs
- SimpleMailWebEventProvider.cs
- ResponseBodyWriter.cs
- OutputCacheSection.cs
- HttpWriter.cs
- BaseParagraph.cs
- URLMembershipCondition.cs
- FixedHighlight.cs
- EventSinkHelperWriter.cs
- CodeArgumentReferenceExpression.cs
- FtpRequestCacheValidator.cs
- CssClassPropertyAttribute.cs
- IisTraceWebEventProvider.cs
- EditingCommands.cs
- TextEditorTables.cs
- SolidBrush.cs
- CookieParameter.cs
- UIElementPropertyUndoUnit.cs
- DbConnectionStringCommon.cs
- StorageFunctionMapping.cs
- InstanceHandleReference.cs
- ExpressionBuilder.cs
- odbcmetadatafactory.cs
- ValueType.cs
- ToolStripScrollButton.cs
- DataFormats.cs
- FontDialog.cs
- SystemIPGlobalStatistics.cs
- AuthStoreRoleProvider.cs
- NonValidatingSecurityTokenAuthenticator.cs
- AppDomain.cs
- SqlRowUpdatedEvent.cs
- AttachedAnnotation.cs
- TextDocumentView.cs
- SpnegoTokenProvider.cs
- Rect.cs
- ResourcePermissionBaseEntry.cs
- Cursors.cs
- RenderingBiasValidation.cs
- DbDataAdapter.cs
- Point3DAnimationUsingKeyFrames.cs
- DefaultValueAttribute.cs
- DecimalAnimation.cs
- Queue.cs
- SQLGuid.cs
- ClientType.cs
- columnmapfactory.cs
- Help.cs
- OletxTransactionHeader.cs
- DataGridViewRowCollection.cs
- TypeNameConverter.cs
- BooleanKeyFrameCollection.cs
- XmlText.cs
- VisualStyleTypesAndProperties.cs
- COM2FontConverter.cs
- QuaternionAnimationUsingKeyFrames.cs
- BitmapEffectGroup.cs
- WCFServiceClientProxyGenerator.cs
- FaultImportOptions.cs
- CanExecuteRoutedEventArgs.cs
- RuntimeEnvironment.cs
- Debug.cs