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
- SystemWebSectionGroup.cs
- PerformanceCounter.cs
- ListViewCommandEventArgs.cs
- Label.cs
- ViewCellRelation.cs
- RequestBringIntoViewEventArgs.cs
- WindowsToolbar.cs
- UnsafeNativeMethods.cs
- TreeNodeClickEventArgs.cs
- AttributeCollection.cs
- WinEventWrap.cs
- EraserBehavior.cs
- ScrollItemPatternIdentifiers.cs
- XmlAttribute.cs
- ControlSerializer.cs
- StoragePropertyMapping.cs
- KeyValuePairs.cs
- ReadOnlyState.cs
- ComponentGlyph.cs
- FixedSOMElement.cs
- AliasedExpr.cs
- XmlQueryCardinality.cs
- ClientTargetSection.cs
- GridPatternIdentifiers.cs
- ControlTemplate.cs
- Rotation3DAnimationBase.cs
- TransformerInfoCollection.cs
- TextUtf8RawTextWriter.cs
- TableLayout.cs
- MarshalByRefObject.cs
- Condition.cs
- Message.cs
- Point.cs
- DomainLiteralReader.cs
- DbConnectionPool.cs
- HttpServerUtilityBase.cs
- CollectionChangedEventManager.cs
- MetadataWorkspace.cs
- TableCellCollection.cs
- LeaseManager.cs
- ParameterElementCollection.cs
- ScrollItemProviderWrapper.cs
- HttpDebugHandler.cs
- ByteStack.cs
- ThreadWorkerController.cs
- SessionConnectionReader.cs
- FrameworkObject.cs
- AsyncOperationManager.cs
- VisualStateGroup.cs
- FrameworkRichTextComposition.cs
- ManipulationVelocities.cs
- VariableBinder.cs
- IntPtr.cs
- Style.cs
- CustomErrorCollection.cs
- ObjectTypeMapping.cs
- StateMachineDesignerPaint.cs
- Ipv6Element.cs
- LinqDataSourceUpdateEventArgs.cs
- MenuBase.cs
- DesignerResources.cs
- OdbcParameter.cs
- WebControlAdapter.cs
- WindowsFont.cs
- basecomparevalidator.cs
- SQLDoubleStorage.cs
- KnownBoxes.cs
- HttpException.cs
- HostedImpersonationContext.cs
- DbExpressionVisitor_TResultType.cs
- InteropBitmapSource.cs
- ClientFormsAuthenticationMembershipProvider.cs
- ColumnClickEvent.cs
- ImagingCache.cs
- IconHelper.cs
- ControlPropertyNameConverter.cs
- AutoResizedEvent.cs
- EDesignUtil.cs
- Win32MouseDevice.cs
- DropShadowEffect.cs
- httpstaticobjectscollection.cs
- ButtonColumn.cs
- TypeDescriptor.cs
- Comparer.cs
- RoleGroup.cs
- DrawingContext.cs
- Vector3DCollection.cs
- UnsafeNativeMethodsTablet.cs
- ExpressionLexer.cs
- HebrewCalendar.cs
- LayoutDump.cs
- TableItemPattern.cs
- OdbcParameterCollection.cs
- CodeArrayIndexerExpression.cs
- RemoteWebConfigurationHostServer.cs
- KeyedPriorityQueue.cs
- RangeContentEnumerator.cs
- XmlObjectSerializerReadContextComplexJson.cs
- CodeConditionStatement.cs
- CheckBoxFlatAdapter.cs