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
- XmlChildEnumerator.cs
- FieldToken.cs
- IsolatedStorageFile.cs
- BulletChrome.cs
- EntitySetRetriever.cs
- OciEnlistContext.cs
- URLAttribute.cs
- DataGridViewCellValueEventArgs.cs
- UnicodeEncoding.cs
- FileEnumerator.cs
- SafeHandle.cs
- TabControlCancelEvent.cs
- ELinqQueryState.cs
- UInt32Converter.cs
- Transform3DGroup.cs
- Point4D.cs
- Context.cs
- DigitShape.cs
- Choices.cs
- Region.cs
- CodeRegionDirective.cs
- LinqDataSourceContextEventArgs.cs
- WebServiceErrorEvent.cs
- SqlConnection.cs
- RightsManagementErrorHandler.cs
- GlyphInfoList.cs
- SettingsProperty.cs
- SimpleRecyclingCache.cs
- RowBinding.cs
- WindowsGraphicsWrapper.cs
- TransformConverter.cs
- TreeNodeConverter.cs
- HttpServerVarsCollection.cs
- CodeNamespace.cs
- OdbcError.cs
- GridViewRow.cs
- ButtonFlatAdapter.cs
- SessionPageStateSection.cs
- typedescriptorpermissionattribute.cs
- Encoding.cs
- PropertyGridEditorPart.cs
- SymmetricKeyWrap.cs
- ConditionalWeakTable.cs
- TemplateInstanceAttribute.cs
- PointHitTestResult.cs
- WebExceptionStatus.cs
- RawUIStateInputReport.cs
- DeflateEmulationStream.cs
- SafeNativeMethods.cs
- RTLAwareMessageBox.cs
- BamlStream.cs
- ViewPort3D.cs
- Clipboard.cs
- ResourceProviderFactory.cs
- InputScope.cs
- HttpDebugHandler.cs
- AudioFormatConverter.cs
- ValidateNames.cs
- Matrix3D.cs
- ContextQuery.cs
- ShaderEffect.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- ScriptManagerProxy.cs
- GlobalAllocSafeHandle.cs
- EntityContainer.cs
- InvalidDataException.cs
- Utils.cs
- JulianCalendar.cs
- FlowDocumentScrollViewer.cs
- SingleBodyParameterMessageFormatter.cs
- QueueProcessor.cs
- GB18030Encoding.cs
- TextServicesCompartmentEventSink.cs
- ScaleTransform.cs
- FixedStringLookup.cs
- TransformerInfoCollection.cs
- Clock.cs
- CachedCompositeFamily.cs
- CollectionEditVerbManager.cs
- TypeNameConverter.cs
- ToggleButton.cs
- OleDbCommandBuilder.cs
- DatatypeImplementation.cs
- ClientProtocol.cs
- DocumentViewerHelper.cs
- SystemIPGlobalProperties.cs
- Recipient.cs
- PropertySet.cs
- Delay.cs
- Button.cs
- DataKey.cs
- ProcessHost.cs
- ProcessHostFactoryHelper.cs
- Accessible.cs
- ResourceProviderFactory.cs
- EntityConnectionStringBuilder.cs
- StoreContentChangedEventArgs.cs
- DoubleUtil.cs
- RawKeyboardInputReport.cs
- SignatureHelper.cs