Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- SecurityStandardsManager.cs
- QilInvokeEarlyBound.cs
- RequestCachePolicy.cs
- autovalidator.cs
- RsaSecurityToken.cs
- PathStreamGeometryContext.cs
- UiaCoreApi.cs
- ContentValidator.cs
- IntranetCredentialPolicy.cs
- GlobalDataBindingHandler.cs
- TextDecoration.cs
- PageRequestManager.cs
- CryptoApi.cs
- ProxyDataContractResolver.cs
- PenCursorManager.cs
- TcpTransportSecurity.cs
- TraversalRequest.cs
- StyleSheetDesigner.cs
- MachineKeySection.cs
- UIElement.cs
- UnionExpr.cs
- CollectionChangeEventArgs.cs
- WebPartMovingEventArgs.cs
- FacetChecker.cs
- CodeAccessPermission.cs
- TextRangeEditTables.cs
- PrincipalPermission.cs
- ContextProperty.cs
- PageTheme.cs
- MSHTMLHostUtil.cs
- SspiWrapper.cs
- QuaternionKeyFrameCollection.cs
- TreeNodeCollection.cs
- AppendHelper.cs
- CharUnicodeInfo.cs
- SrgsElement.cs
- PromptStyle.cs
- ButtonFieldBase.cs
- EntityClientCacheKey.cs
- DynamicRenderer.cs
- EventDescriptorCollection.cs
- AnnotationHighlightLayer.cs
- DataBindingExpressionBuilder.cs
- TableAutomationPeer.cs
- XsdValidatingReader.cs
- _ListenerResponseStream.cs
- DefaultEventAttribute.cs
- VariableAction.cs
- LayoutEngine.cs
- ReflectionServiceProvider.cs
- FastPropertyAccessor.cs
- StdValidatorsAndConverters.cs
- DbMetaDataColumnNames.cs
- CommandValueSerializer.cs
- XamlToRtfWriter.cs
- DataListCommandEventArgs.cs
- HostingPreferredMapPath.cs
- ReaderOutput.cs
- WCFBuildProvider.cs
- PerformanceCounterLib.cs
- templategroup.cs
- WizardStepBase.cs
- ServiceOperationParameter.cs
- RepeaterItemEventArgs.cs
- FieldAccessException.cs
- PasswordDeriveBytes.cs
- ServiceCredentialsElement.cs
- TextServicesCompartmentContext.cs
- PackageRelationshipSelector.cs
- ProfileManager.cs
- AmbientValueAttribute.cs
- NavigatingCancelEventArgs.cs
- bindurihelper.cs
- DispatchChannelSink.cs
- WorkflowApplicationUnhandledExceptionEventArgs.cs
- MediaElement.cs
- StringFreezingAttribute.cs
- EntityCommandExecutionException.cs
- TextTreeInsertElementUndoUnit.cs
- KnownBoxes.cs
- DependencyPropertyDescriptor.cs
- OutOfProcStateClientManager.cs
- EngineSiteSapi.cs
- XsdBuilder.cs
- ToolStripRendererSwitcher.cs
- CharacterBufferReference.cs
- TextInfo.cs
- CommentAction.cs
- MimeTextImporter.cs
- PathParser.cs
- WebControlParameterProxy.cs
- ResourceCategoryAttribute.cs
- SmiTypedGetterSetter.cs
- _FixedSizeReader.cs
- ArgumentException.cs
- NativeWrapper.cs
- SByte.cs
- HttpCacheVaryByContentEncodings.cs
- XmlSchemaAppInfo.cs
- __ConsoleStream.cs