Code:
/ 4.0 / 4.0 / 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. /****************************************************************************\ * * 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
- SignatureHelper.cs
- PathGeometry.cs
- LightweightCodeGenerator.cs
- Control.cs
- FixUpCollection.cs
- SecurityKeyEntropyMode.cs
- MinimizableAttributeTypeConverter.cs
- MemberHolder.cs
- CalendarDay.cs
- CodeDomSerializationProvider.cs
- SecurityManager.cs
- SchemaCreator.cs
- DataGridViewCell.cs
- SystemWebSectionGroup.cs
- ContextBase.cs
- EmptyElement.cs
- EventHandlersStore.cs
- AppSettingsExpressionBuilder.cs
- BoolExpressionVisitors.cs
- ClientSettings.cs
- RegisteredScript.cs
- XmlName.cs
- Function.cs
- EnterpriseServicesHelper.cs
- WinInet.cs
- DataGridAutoGeneratingColumnEventArgs.cs
- SingleAnimation.cs
- DeviceContext2.cs
- MergeFilterQuery.cs
- TextBox.cs
- DetailsViewRowCollection.cs
- TagPrefixCollection.cs
- HeaderUtility.cs
- Binding.cs
- HttpStreamXmlDictionaryWriter.cs
- ObjectTag.cs
- BackgroundFormatInfo.cs
- TransformPattern.cs
- DataReaderContainer.cs
- LocalValueEnumerator.cs
- CodeGroup.cs
- RemotingAttributes.cs
- isolationinterop.cs
- RenameRuleObjectDialog.Designer.cs
- Vector.cs
- Application.cs
- OdbcConnectionString.cs
- Utils.cs
- LinkedResource.cs
- Section.cs
- DataGridRow.cs
- CollectionViewGroupInternal.cs
- GridSplitter.cs
- TargetConverter.cs
- TemplateManager.cs
- DataGridSortCommandEventArgs.cs
- SafeNativeMethods.cs
- GACMembershipCondition.cs
- XmlParser.cs
- Serializer.cs
- ListBoxItem.cs
- PeerObject.cs
- __Error.cs
- MetadataItemEmitter.cs
- HealthMonitoringSectionHelper.cs
- ConstraintCollection.cs
- FixedSOMLineCollection.cs
- EdmRelationshipRoleAttribute.cs
- ProfilePropertyNameValidator.cs
- DesignSurfaceServiceContainer.cs
- AutomationPatternInfo.cs
- Underline.cs
- RewritingProcessor.cs
- HttpCapabilitiesSectionHandler.cs
- TemplateControlParser.cs
- HelpKeywordAttribute.cs
- RadioButtonBaseAdapter.cs
- TraceHandler.cs
- DataKey.cs
- CallSiteBinder.cs
- BasicDesignerLoader.cs
- Oci.cs
- DocumentReference.cs
- PerformanceCounterPermissionEntry.cs
- Filter.cs
- DataGridViewImageColumn.cs
- AuthorizationRuleCollection.cs
- DbTransaction.cs
- Module.cs
- XamlContextStack.cs
- GAC.cs
- EditingCoordinator.cs
- SqlClientWrapperSmiStreamChars.cs
- ButtonFlatAdapter.cs
- TransactionManager.cs
- DecoderNLS.cs
- XmlSecureResolver.cs
- Delegate.cs
- MouseEventArgs.cs
- DataStorage.cs