Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Markup / BamlVersionHeader.cs / 1305600 / 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
- GridEntryCollection.cs
- TriggerBase.cs
- WebPartTracker.cs
- RijndaelManaged.cs
- CacheDependency.cs
- XmlIlTypeHelper.cs
- SqlOuterApplyReducer.cs
- SqlConnectionManager.cs
- CdpEqualityComparer.cs
- ListenerPerfCounters.cs
- TemplateComponentConnector.cs
- SerializationUtility.cs
- shaper.cs
- RegistrySecurity.cs
- SiteMapNodeItemEventArgs.cs
- InternalTypeHelper.cs
- XmlArrayItemAttributes.cs
- _AutoWebProxyScriptHelper.cs
- PowerModeChangedEventArgs.cs
- StoreContentChangedEventArgs.cs
- SynchronizationLockException.cs
- EdmItemCollection.cs
- SelectionGlyphBase.cs
- MailMessageEventArgs.cs
- DataTable.cs
- XmlSchemaAppInfo.cs
- base64Transforms.cs
- MobileTextWriter.cs
- ObjectListCommand.cs
- PublisherMembershipCondition.cs
- SmtpClient.cs
- TextPointerBase.cs
- TemplateBindingExtension.cs
- XmlHierarchyData.cs
- CommandValueSerializer.cs
- BinaryObjectWriter.cs
- mansign.cs
- CapabilitiesSection.cs
- TextProviderWrapper.cs
- ThemeDirectoryCompiler.cs
- EdmConstants.cs
- MessageSmuggler.cs
- _CacheStreams.cs
- Gdiplus.cs
- MemoryStream.cs
- DataServices.cs
- HelloMessage11.cs
- InputLanguageCollection.cs
- ForceCopyBuildProvider.cs
- DeclaredTypeElement.cs
- ConnectionInterfaceCollection.cs
- NotImplementedException.cs
- AnonymousIdentificationSection.cs
- Input.cs
- ReadOnlyCollectionBase.cs
- HttpWrapper.cs
- Localizer.cs
- DataReceivedEventArgs.cs
- EncoderFallback.cs
- safesecurityhelperavalon.cs
- WebPartDisplayMode.cs
- WebPartDisplayModeCollection.cs
- ISAPIRuntime.cs
- MarshalByRefObject.cs
- GridViewRowPresenter.cs
- TreePrinter.cs
- embossbitmapeffect.cs
- BoolLiteral.cs
- ReliableReplySessionChannel.cs
- RelationshipNavigation.cs
- ThicknessAnimationBase.cs
- _ConnectStream.cs
- NumericPagerField.cs
- WSAddressing10ProblemHeaderQNameFault.cs
- TextSimpleMarkerProperties.cs
- Adorner.cs
- MenuAutomationPeer.cs
- ErrorEventArgs.cs
- Configuration.cs
- StaticResourceExtension.cs
- ParamArrayAttribute.cs
- ComponentManagerBroker.cs
- TypeLoadException.cs
- DataServiceResponse.cs
- XsltLibrary.cs
- DataGridState.cs
- XMLDiffLoader.cs
- Part.cs
- ObjRef.cs
- VersionedStreamOwner.cs
- DispatcherExceptionEventArgs.cs
- TableStyle.cs
- SecurityHelper.cs
- XDRSchema.cs
- WebPermission.cs
- CompiledQuery.cs
- SwitchElementsCollection.cs
- EventSinkActivityDesigner.cs
- HttpServerVarsCollection.cs
- ListControlDataBindingHandler.cs