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
- SubpageParagraph.cs
- ScrollData.cs
- DetailsViewRow.cs
- ScriptControlManager.cs
- CodeTypeParameter.cs
- DataGridCommandEventArgs.cs
- FormConverter.cs
- IPGlobalProperties.cs
- EnumUnknown.cs
- SqlParameterizer.cs
- XmlReader.cs
- PropertyInfoSet.cs
- RemotingConfiguration.cs
- XmlText.cs
- SequentialUshortCollection.cs
- InputDevice.cs
- EtwTrace.cs
- XmlSchemaAny.cs
- DispatcherExceptionEventArgs.cs
- ObjectDataSourceStatusEventArgs.cs
- SqlCacheDependency.cs
- InvalidOleVariantTypeException.cs
- StylusCaptureWithinProperty.cs
- WinCategoryAttribute.cs
- handlecollector.cs
- PrePrepareMethodAttribute.cs
- ProxyElement.cs
- TypeFieldSchema.cs
- Ipv6Element.cs
- DictionaryMarkupSerializer.cs
- PointLight.cs
- PropertyDescriptor.cs
- DeleteBookmarkScope.cs
- DataGridViewCellPaintingEventArgs.cs
- GridViewCommandEventArgs.cs
- CrossContextChannel.cs
- TextDecoration.cs
- LightweightCodeGenerator.cs
- DataGridViewElement.cs
- SystemResourceHost.cs
- SimpleApplicationHost.cs
- DashStyle.cs
- RectAnimationUsingKeyFrames.cs
- validationstate.cs
- LeaseManager.cs
- OperatingSystem.cs
- TreeViewAutomationPeer.cs
- SqlNotificationRequest.cs
- ListControlDesigner.cs
- tabpagecollectioneditor.cs
- TrackingDataItem.cs
- WebPartConnectionsConnectVerb.cs
- ViewCellRelation.cs
- CodeConstructor.cs
- RegistrationContext.cs
- XmlSchemaSimpleTypeRestriction.cs
- CompiledQueryCacheKey.cs
- VisualBrush.cs
- UntrustedRecipientException.cs
- WindowsAltTab.cs
- BitmapDecoder.cs
- ViewLoader.cs
- ItemMap.cs
- RichTextBoxConstants.cs
- Parser.cs
- NumberSubstitution.cs
- VoiceChangeEventArgs.cs
- HeaderCollection.cs
- EpmContentSerializer.cs
- FacetChecker.cs
- ChildTable.cs
- GridViewCancelEditEventArgs.cs
- WebBrowserUriTypeConverter.cs
- IImplicitResourceProvider.cs
- RegistrySecurity.cs
- DataGridViewMethods.cs
- CuspData.cs
- DesignerEventService.cs
- MergeFailedEvent.cs
- ControlAdapter.cs
- RecognitionEventArgs.cs
- SizeValueSerializer.cs
- WebPartExportVerb.cs
- GenericTypeParameterBuilder.cs
- Quaternion.cs
- AssociationProvider.cs
- NumberAction.cs
- MetadataWorkspace.cs
- SByte.cs
- BitmapFrameEncode.cs
- DocumentXPathNavigator.cs
- WebEvents.cs
- NavigationExpr.cs
- PersonalizationProvider.cs
- Regex.cs
- DataStreams.cs
- ScrollContentPresenter.cs
- Int32RectConverter.cs
- CompilationLock.cs
- ElementMarkupObject.cs