BCL (Base Class Library) vs FCL (Framework Class Library)

C#.NetTerminology

C# Problem Overview


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

C# Solutions


Solution 1 - C#

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.

Solution 2 - C#

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

Solution 3 - C#

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

Solution 4 - C#

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.

Solution 5 - C#

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!

Solution 6 - C#

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJoan VengeView Question on Stackoverflow
Solution 1 - C#Bellarmine HeadView Answer on Stackoverflow
Solution 2 - C#Chris SView Answer on Stackoverflow
Solution 3 - C#Ashish ShuklaView Answer on Stackoverflow
Solution 4 - C#Praveen PrajapatiView Answer on Stackoverflow
Solution 5 - C#Joshua BeldenView Answer on Stackoverflow
Solution 6 - C#user1899020View Answer on Stackoverflow