Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / Markup / BamlVersionHeader.cs / 1 / BamlVersionHeader.cs
/****************************************************************************\
*
* File: BamlVersionHeader.cs
*
* Copyright (C) 2005 by Microsoft Corporation. All rights reserved.
*
\***************************************************************************/
using System;
using System.IO;
using System.Globalization;
using System.Diagnostics;
using MS.Internal.IO.Packaging.CompoundFile;
#if PBTCOMPILER
namespace MS.Internal.Markup
#else
namespace System.Windows.Markup
#endif
{
internal class BamlVersionHeader
{
// The current BAML record version. This is incremented whenever
// the BAML format changes
// Baml Format Breaking Changes should change this.
internal static readonly VersionPair BamlWriterVersion;
static BamlVersionHeader()
{
// Initialize the Version number this way so that it can be
// seen in the Lutz Reflector.
BamlWriterVersion = new VersionPair(0, 96);
}
public BamlVersionHeader()
{
_bamlVersion = new FormatVersion("MSBAML", BamlWriterVersion);
}
public FormatVersion BamlVersion
{
get { return _bamlVersion; }
#if !PBTCOMPILER
set { _bamlVersion = value; }
#endif
}
// This is used by Async loading to measure if the whole record is present
static public int BinarySerializationSize
{
get
{
// Unicode "MSBAML" = 12
// + 4 bytes length header = 12 + 4 = 16
// + 3*(16bit MinorVer + 16bit MajorVer) = 16+(3*(2+2))= 28
// For product stability the size of this data structure
// shouldn't change anyway.
return 28;
}
}
#if !PBTCOMPILER
internal void LoadVersion(BinaryReader bamlBinaryReader)
{
#if DEBUG
long posStart = bamlBinaryReader.BaseStream.Position;
#endif
BamlVersion = FormatVersion.LoadFromStream(bamlBinaryReader.BaseStream);
#if DEBUG
long posEnd = bamlBinaryReader.BaseStream.Position;
Debug.Assert((posEnd-posStart) == BamlVersionHeader.BinarySerializationSize,
"Incorrect Baml Version Header Size");
#endif
// We're assuming that only major versions are significant for compatibility,
// so if we have a major version in the file that is higher than that in
// the code, we can't read it.
if (BamlVersion.ReaderVersion != BamlWriterVersion)
{
throw new InvalidOperationException(SR.Get(SRID.ParserBamlVersion,
(BamlVersion.ReaderVersion.Major.ToString(CultureInfo.CurrentCulture) + "." +
BamlVersion.ReaderVersion.Minor.ToString(CultureInfo.CurrentCulture)),
(BamlWriterVersion.Major.ToString(CultureInfo.CurrentCulture) + "." +
BamlWriterVersion.Minor.ToString(CultureInfo.CurrentCulture))));
}
}
#endif
internal void WriteVersion(BinaryWriter bamlBinaryWriter)
{
#if DEBUG
long posStart = bamlBinaryWriter.BaseStream.Position;
#endif
BamlVersion.SaveToStream(bamlBinaryWriter.BaseStream);
#if DEBUG
long posEnd = bamlBinaryWriter.BaseStream.Position;
if(-1 == posStart)
{
long length = bamlBinaryWriter.BaseStream.Length;
Debug.Assert(length == BamlVersionHeader.BinarySerializationSize,
"Incorrect Baml Version Header Size");
}
else
{
Debug.Assert((posEnd-posStart) == BamlVersionHeader.BinarySerializationSize,
"Incorrect Baml Version Header Size");
}
#endif
}
FormatVersion _bamlVersion;
}
}
// 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
- ContentIterators.cs
- ProfilePropertyMetadata.cs
- SiteMapNodeCollection.cs
- rsa.cs
- ChameleonKey.cs
- ValidatingPropertiesEventArgs.cs
- DesignTimeHTMLTextWriter.cs
- DataServiceQueryProvider.cs
- StringAttributeCollection.cs
- SingleObjectCollection.cs
- HttpVersion.cs
- TypedDatasetGenerator.cs
- DataTemplateSelector.cs
- PeerApplication.cs
- XmlILOptimizerVisitor.cs
- RecordsAffectedEventArgs.cs
- BookmarkNameHelper.cs
- CompiledScopeCriteria.cs
- HitTestFilterBehavior.cs
- StringAnimationBase.cs
- DataSysAttribute.cs
- ToolStripGrip.cs
- DoubleAnimationUsingKeyFrames.cs
- EmbeddedObject.cs
- ConfigXmlDocument.cs
- EllipticalNodeOperations.cs
- ContextInformation.cs
- PeerApplication.cs
- ComponentManagerBroker.cs
- ColumnMapVisitor.cs
- RecommendedAsConfigurableAttribute.cs
- TabItem.cs
- SqlClientWrapperSmiStream.cs
- wgx_commands.cs
- WeakReference.cs
- BindingSourceDesigner.cs
- SchemaImporter.cs
- ArgumentDesigner.xaml.cs
- translator.cs
- LinqDataSourceSelectEventArgs.cs
- SafeRightsManagementPubHandle.cs
- SchemaType.cs
- CompilerResults.cs
- XAMLParseException.cs
- SByteConverter.cs
- UserControlBuildProvider.cs
- ObjectTokenCategory.cs
- BooleanFunctions.cs
- StringSource.cs
- mediapermission.cs
- RijndaelManagedTransform.cs
- StylusPointPropertyId.cs
- PreviewPrintController.cs
- DocumentOrderQuery.cs
- MatrixValueSerializer.cs
- PriorityChain.cs
- ComponentManagerBroker.cs
- ToolboxItem.cs
- CompositeDataBoundControl.cs
- LogicalChannelCollection.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- PixelFormatConverter.cs
- DependentTransaction.cs
- HwndHost.cs
- ThreadStateException.cs
- RSAPKCS1SignatureFormatter.cs
- Emitter.cs
- ObsoleteAttribute.cs
- StoryFragments.cs
- latinshape.cs
- InkCanvasInnerCanvas.cs
- DropShadowEffect.cs
- MergeFailedEvent.cs
- ISO2022Encoding.cs
- StrokeNodeOperations2.cs
- SoapIgnoreAttribute.cs
- DoubleAnimationClockResource.cs
- XamlRtfConverter.cs
- SettingsProperty.cs
- ToolBarButton.cs
- DrawingState.cs
- ThrowHelper.cs
- ExpressionEditorAttribute.cs
- BoundField.cs
- DataGridPageChangedEventArgs.cs
- PointIndependentAnimationStorage.cs
- ACL.cs
- DesignerDataRelationship.cs
- RegistryConfigurationProvider.cs
- PointIndependentAnimationStorage.cs
- SqlDataSourceCache.cs
- ByteStreamGeometryContext.cs
- TreeSet.cs
- _AcceptOverlappedAsyncResult.cs
- DependencyObjectProvider.cs
- BuildResultCache.cs
- HandledMouseEvent.cs
- VerificationException.cs
- TextElementCollectionHelper.cs
- InputProcessorProfilesLoader.cs