New BCL features in Beta1

[Ahmed AbouTaleb]

Here is a list of all the new BCL features that shipped in Visual studio 2005 Beta1

Regular Expressions

We added the ability to use character class subtraction to regular expressions. The specification is publicly available here.


Compression Support

We have added the ability to compress, and decompress streams using the standard GZip and Deflate formats. Check the System.IO.Compression namespace for the classes you need to leverage this functionality.


ACLs support

We have now exposed the ability to manipulate and manage ACLs from managed code. The basic support is available in the security space, while specific support for various object types is available via the classes that expose the ACL, such as FileStream, or RegistryKey.


DateTime Changes

In order to better enable users to pass DateTime’s around and know the style of the DateTime, the DateTime class now exposes a ‘Kind’ property (and a SpecifyKind method), which uses a DateTimeKind enum to let you know if the DateTime is a local, universal, or unknown (the current behavior) DateTime.


Math Rounding

We’ve expanded the rounding capabilitites on the Math, and Decimal classes.



We’ve added a new class, which can be used to add the null concept to structs.



We have a new class which allows someone to avoid putting confidential data into a String type.


Debugger Display Attributes

We have a variety of new attributes you can decorate your code with, so that they are more useful, and have better information when viewed in a debugger.


Various System Work

We’ve added a variety of small features to System classes, such as the ability to set environment variables (via the Environment class), some new generic classes such as EventHandler<T> and ArraySegment<T>, new methods on String (new overloads for Split, EndsWith, and BeginsWith are some examples), and additional information available on the OSVersion (from Environment).



We’ve added a new stream to be able to access memory from an unmanaged source.


Base Collections

System.Collections namespace now contains collections intended for scenarios where a collection needs to be exposed from an object model. For example Directory.Files property returning a collection of files in a directory. The collections are called Collection<T>, ReadOnlyCollection<T>, and KeyedCollection<K,T>.


Delegate Based Members on List<T> and Array.

A good description of the feature can be found at



See System.Collections.Generic.LinkedList<T>



  • Strongly Typed Resources which enables the developers to access resources easily without the need to remember the resources IDs.

  • ResourceManager.GetStream a method to enhance the performance of resources retrieval if they are stored as memory stream.



  • New tracing  infrastructure to enable developers to better instrument their apps with new classes like TraceSource and SourceSwitch and new listeners like XmlTraceListener and DelimitedListTraceListener.

  • Create process as a user in the process class.



  • Semaphore class which was a missing functionality in the framework.

  • Named Events to enhance the cross-process communication.

  • Abandoned mutex detection.

Comments (12)

  1. Anonymous says:

    How about support for memory mapped files?

    Although it is not that difficult to build yourself 🙂

  2. Anonymous says:

    Peter, that’s certainly on our list of things to do in a near-future implementation. Probably not the next version of VS, but hopefully soon thereafter!

  3. Anonymous says:

    Dear God, thank you for the ACL support. This has been such a royal pain in the arse. No more AdSecurity.dll in my deployment packages…

    Thanks, guys, for all of your hard work.

  4. Anonymous says:

    Yes…. thank you thank you thank you for the ACL support.

  5. Anonymous says:

    ACLs is certainly one of those areas that would love any feedback on as well, so let us know if there’s anything missing that you expected to be there!

  6. Anonymous says:

    Before proceeding further, let me congratulate you folks for the excellent work in System.Security.Crytography!!!

    Here’s a bug that I think you folks should address:

    For some reason, X509CertificateEx.Export() does not allow the option to export the entire certificate trust chain. This is a surprising omission considering that the X509IncludeOption parameter is available on classes like CmsSigner. Note that the absence of the entire trust chain is especially annoying when you are trying to generate x509/.pfx/pkcs12 files from X509Certificate because the user needs to import the trust chain separately after installing the exported file.

    This has already been submitted as bug #FDBK12912 on the Beta feedback site, but I wanted to make sure it gets noticed :)…


  7. Anonymous says:

    Thanks Atul for the feedback. X509CertificateEx.Export only exports the certificate itself and does not build the certificate chain. It is however possible to export the whole certificate chain with the set of APIs available today: what you could do is build a chain using X509Chain.Build; then get the certificates in the chain by accessing X509Chain.ChainElements. Once you get the collection you want exports, you can call X509CertificateExCollection.Export: this method is the way to go if you need to export more than one certificate.



  8. Anonymous says:

    Ah hah — thanks for the clarification. I looked X509Chain but didn’t make the association with X509CertificateExCollection.Export. I will give it a try…


  9. Anonymous says:

    Excellent — that worked like a charm!!!


Skip to main content