112

What's the difference between the two? Can we use them interchangeably?

GEOCHET
  • 21,119
  • 15
  • 74
  • 98
Joan Venge
  • 315,713
  • 212
  • 479
  • 689

6 Answers6

116

The Base Class Library (BCL) is literally that, the base. It contains basic, fundamental types like System.String and System.DateTime.

The Framework Class Library (FCL) is the wider library that contains the totality: ASP.NET, WinForms, the XML stack, ADO.NET and more. You could say that the FCL includes the BCL.

Ajay
  • 18,086
  • 12
  • 59
  • 105
Bellarmine Head
  • 3,397
  • 2
  • 22
  • 31
  • 41
    On a simple level, .NET Framework = libraries (FCL, BCL), language compilers (C#, VB.NET) and Common Language Runtime (CLR). Plus then there's the whole ecosytem that surrounds that: Visual Studio, MSDN Help, and more. – Bellarmine Head May 01 '09 at 09:44
  • 3
    @JoanVenge BCL is a subset of FCL; BCL is a subcomponent of FCL, not a separate component all together. – John Smith Aug 20 '16 at 22:32
33

BCL:

A .NET Framework library, BCL is the standard for the C# runtime library and one of the Common Language Infrastructure (CLI) standard libraries. BCL provides types representing the built-in CLI data types, basic file access, collections, custom attributes, formatting, security attributes, I/O streams, string manipulation, and more.

FCL:

The .NET Framework class library is exactly what its name suggests: a library of classes and other types that developers can use to make their lives easier. While these classes are themselves written in C#, they can be used from any CLRbased language

You'll be using the BCL with some parts of the FCL with each project type. So System.Windows.Forms (a separate library) or System.Web, with the BCL from mscorlib and System.dll

Community
  • 1
  • 1
Chris S
  • 64,770
  • 52
  • 221
  • 239
28

BCL stands for Base class library also known as Class library (CL). BCL is a subset of Framework class library (FCL). Class library is the collection of reusable types that are closely integrated with CLR. Base Class library provides classes and types that are helpful in performing day to day operation e.g. dealing with string and primitive types, database connection, IO operations.

while Framework class library contains thousands of classes used to build different types of applications and provides all the basic functionalities and services that application needs. FCL includes classes and services to support different variety of application e.g.

  • Desktop application,

  • Web application (ASP.Net, MVC, WCF),

  • Mobile application,

  • Xbox application,

  • windows services etc.

More details at What is BCL/ CL in .Net?

enter image description here

Amir Shabani
  • 3,857
  • 6
  • 30
  • 67
Ashish Shukla
  • 1,239
  • 12
  • 23
15

The Base Class Library (BCL) is the core set of classes that serve as the basic API of the Common Language Runtime. The classes in mscorlib.dll and some of the classes in System.dll and System.core.dll are considered to be a part of the BCL. It includes the classes in namespaces like System , System.Diagnostics , System.Globalization, System.Resources , System.Text , System.Runtime.Serialization and System.Data etc.

The Framework Class Library (FCL) is a superset of the BCL classes and refers to the entire class library that ships with .NET Framework. It includes an expanded set of libraries, including Windows Forms, ADO.NET, ASP.NET, Language Integrated Query, Windows Presentation Foundation, Windows Communication Foundation among others.

So there are differences and you must not use those interchangeably.

Praveen Prajapati
  • 969
  • 1
  • 16
  • 21
14

The BCL is a subset of the FCL. BCL honors the ECMA specification for the common language infrastructure. Then Microsoft added all their goodness like data and xml and called it the Framework Class Library. Basically they took the BCL and made it go to 11!

Joshua Belden
  • 10,273
  • 8
  • 40
  • 56
  • 2
    Thanks, what do you mean by "go to 11"? – Joan Venge Apr 30 '09 at 16:55
  • 1
    Haven't heard that one. Can you tell me what it means so I am not left out? – Joan Venge Apr 30 '09 at 20:25
  • 8
    So in the movie 'This is Spinal Tap' which is a satirical look at heavy metal bands in a mock-umentary style, the guitarist (Nigel Tufnel) shows off an amp that he had specially made to Marty DiBergi: Nigel Tufnel: The numbers all go to eleven. Look, right across the board, eleven, eleven, eleven and... Marty DiBergi: Oh, I see. And most amps go up to ten? : Exactly. : Does that mean it's louder? Is it any louder? : Well, it's one louder, isn't it? – Ichorus Dec 22 '09 at 20:15
  • 1
    @Ichorus but why don't they just make ten louder? – Simon Bosley Jul 03 '17 at 08:13
10

The following is cited from the book "The C# Player's Guide".

The BCL contains all of the built-in types, arrays, exceptions, math libraries, basic File I/O, security, collections, reflection, networking, string manipulation, threading, and more. While not a perfect guide, a general rule is that any namespace that start with System is a part of the BCL.

Beyond the BCL, there are many more classes that Microsoft ships with the .NET Framework. In general, these additional things cover broad functional areas, such as database access or graphical user interfaces (Windows Forms or WPF). This entire collection, including the BCL, is called the Framework Class Library, or FCL. In casual discussion, sometimes people use FCL and BCL interchangeably, which isn’t strictly correct, but it is perhaps good enough for most things.

user1899020
  • 13,167
  • 21
  • 79
  • 154