Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / 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. /****************************************************************************\ * * 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
- ActivationArguments.cs
- NativeMethods.cs
- ApplicationBuildProvider.cs
- PrintDialog.cs
- ProfilePropertySettingsCollection.cs
- FormViewUpdateEventArgs.cs
- WebPartConnectionsCloseVerb.cs
- _SslSessionsCache.cs
- ContentValidator.cs
- MetaDataInfo.cs
- OracleParameterBinding.cs
- ServiceNameElement.cs
- ExpressionBuilderContext.cs
- ScriptReference.cs
- IdentityValidationException.cs
- Accessible.cs
- HashCoreRequest.cs
- BufferedReadStream.cs
- Int32Collection.cs
- XPathCompileException.cs
- embossbitmapeffect.cs
- NonParentingControl.cs
- BlurBitmapEffect.cs
- DataControlField.cs
- RewritingValidator.cs
- Selection.cs
- ReadOnlyCollectionBase.cs
- BrowserDefinition.cs
- ToolStripActionList.cs
- ResumeStoryboard.cs
- ProviderException.cs
- ProfileModule.cs
- DataGridViewCellFormattingEventArgs.cs
- PageStatePersister.cs
- ManifestResourceInfo.cs
- DbTransaction.cs
- RadioButtonStandardAdapter.cs
- Timer.cs
- AttributeProviderAttribute.cs
- DelegateArgumentValue.cs
- TextServicesHost.cs
- OleDbConnectionInternal.cs
- DispatcherHookEventArgs.cs
- LineServices.cs
- TabControl.cs
- X509Certificate2Collection.cs
- Cursor.cs
- SmtpDateTime.cs
- EpmSourceTree.cs
- DefaultProxySection.cs
- RuleSetDialog.Designer.cs
- NavigationWindowAutomationPeer.cs
- OutputWindow.cs
- WhereaboutsReader.cs
- FormsIdentity.cs
- StringReader.cs
- SqlDataSourceEnumerator.cs
- TableRow.cs
- XamlFilter.cs
- TextFormattingConverter.cs
- TaskExceptionHolder.cs
- DiscoveryDefaults.cs
- AccessibilityApplicationManager.cs
- StretchValidation.cs
- BitmapPalette.cs
- TextPattern.cs
- HtmlImage.cs
- Perspective.cs
- RegexCapture.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- SafeSystemMetrics.cs
- Timer.cs
- MustUnderstandBehavior.cs
- Menu.cs
- XmlIlVisitor.cs
- VisualStyleTypesAndProperties.cs
- XmlWriter.cs
- AmbientValueAttribute.cs
- Pipe.cs
- CustomUserNameSecurityTokenAuthenticator.cs
- Types.cs
- PackUriHelper.cs
- ObjectContext.cs
- TreeWalker.cs
- GPPOINT.cs
- WebUtil.cs
- ServiceSecurityContext.cs
- MemberRestriction.cs
- Deserializer.cs
- GeneralTransform3DTo2D.cs
- TreeNodeCollection.cs
- PackagingUtilities.cs
- ServiceControllerDesigner.cs
- QilList.cs
- AssemblyCache.cs
- ExceptionWrapper.cs
- HandledEventArgs.cs
- BindingContext.cs
- WebException.cs
- PerfCounters.cs