0% found this document useful (0 votes)
2 views3 pages

.NET Class Libraries Explained

.NET class libraries allow developers to modularize functionality for use across multiple applications and are described using the .NET Assembly file format. There are three types: platform-specific libraries for single platforms, portable libraries for multiple platforms with limited APIs, and .NET Standard libraries that combine features of both while ensuring compatibility across all supporting platforms. Mono also supports these libraries, enabling cross-platform functionality with minimal modification.

Uploaded by

Tran Lan
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views3 pages

.NET Class Libraries Explained

.NET class libraries allow developers to modularize functionality for use across multiple applications and are described using the .NET Assembly file format. There are three types: platform-specific libraries for single platforms, portable libraries for multiple platforms with limited APIs, and .NET Standard libraries that combine features of both while ensuring compatibility across all supporting platforms. Mono also supports these libraries, enabling cross-platform functionality with minimal modification.

Uploaded by

Tran Lan
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

.

NET class libraries


Class libraries are the shared library concept for .NET. They enable you to componentize useful functionality into modules that can
be used by multiple applications. They can also be used as a means of loading functionality that is not needed or not known at
application startup. Class libraries are described using the .NET Assembly file format.

There are three types of class libraries that you can use:

Platform-specific class libraries have access to all the APIs in a given platform (for example, .NET Framework on Windows), but
can only be used by apps and libraries that target that platform.
Portable class libraries have access to a subset of APIs, and can be used by apps and libraries that target multiple platforms.
.NET Standard class libraries are a merger of the platform-specific and portable library concept into a single model that
provides the best of both.

Platform-specific class libraries


Platform-specific libraries are bound to a single .NET platform (for example, .NET Framework on Windows) and can therefore take
significant dependencies on a known execution environment. Such an environment exposes a known set of APIs (.NET and OS APIs)
and maintains and exposes expected state (for example, Windows registry).

Developers who create platform-specific libraries can fully exploit the underlying platform. The libraries will only ever run on that
given platform, making platform checks or other forms of conditional code unnecessary (modulo single sourcing code for multiple
platforms).

Platform-specific libraries have been the primary class library type for the .NET Framework. Even as other .NET implementations
emerged, platform-specific libraries remained the dominant library type.

Portable class libraries


Portable libraries are supported on multiple .NET implementations. They can still take dependencies on a known execution
environment, however, the environment is a synthetic one that's generated by the intersection of a set of concrete .NET
implementations. Exposed APIs and platform assumptions are a subset of what would be available to a platform-specific library.

You choose a platform configuration when you create a portable library. The platform configuration is the set of platforms that you
need to support (for example, .NET Framework 4.5+, Windows Phone 8.0+). The more platforms you opt to support, the fewer APIs
and fewer platform assumptions you can make, the lowest common denominator. This characteristic can be confusing at first, since
people often think "more is better" but find that more supported platforms results in fewer available APIs.

Many library developers have switched from producing multiple platform-specific libraries from one source (using conditional
compilation directives) to portable libraries. There are several approaches for accessing platform-specific functionality within
portable libraries, with bait-and-switch being the most widely accepted technique at this point.

.NET Standard class libraries


.NET Standard libraries are a replacement of the platform-specific and portable libraries concepts. They are platform-specific in the
sense that they expose all functionality from the underlying platform (no synthetic platforms or platform intersections). They are
portable in the sense that they work on all supporting platforms.

.NET Standard exposes a set of library contracts. .NET implementations must support each contract fully or not at all. Each
implementation, therefore, supports a set of .NET Standard contracts. The corollary is that each .NET Standard class library is
supported on the platforms that support its contract dependencies.

.NET Standard does not expose the entire functionality of .NET Framework (nor is that a goal), however, the libraries do expose
many more APIs than Portable Class Libraries.

The following implementations support .NET Standard libraries:

.NET Core
.NET Framework
Mono
Universal Windows Platform (UWP)

For more information, see .NET Standard.

Mono class libraries


Class libraries are supported on Mono, including the three types of libraries described previously. Mono is often viewed as a cross-
platform implementation of .NET Framework. In part, this is because platform-specific .NET Framework libraries can run on the
Mono runtime without modification or recompilation. This characteristic was in place before the creation of portable class libraries,
so was an obvious choice to enable binary portability between .NET Framework and Mono (although it only worked in one
direction).

Last updated on 12/01/2022

You might also like