NGWS SDK Documentation  

This is preliminary documentation and subject to change.
To comment on this topic, please send us email at ngwssdk@microsoft.com. Thanks!

Assemblies Defined

An assembly is a reusable, versionable, self-describing deployment unit for types and resources – it is the primary building block of a NGWS application. Just as we gain benefits from having self-describing types in the NGWS runtime, we also gain benefits from self-describing assemblies. Assemblies build on the benefits of self-describing types by providing the infrastructure we need to allow the Runtime to fully understand the contents of an application and to enforce the versioning and dependency rules defined by the application.

An assembly consists of two logical pieces: the set of types and resources that form some logical unit of functionality and metadata that describes how these elements relate and what they depend on to work properly. The metadata that describes an assembly is called a manifest. Manifests are physically represented using the same metadata technology used to describe components. The only difference is the schema used to represent the information.

The following information is captured in an assembly manifest:

In the simplest case, an assembly is a single dll. This dll contains the code, resources, type metadata and assembly metadata (manifest). In the more general case, however, assemblies consist of a number of files. In this case, the assembly manifest either exists as a standalone file, or is contained in one of the PE files that contain types and/or resources. The following picture shows an assembly called 401k that consists of two files. One file contains the manifest and all the types, while the second file contains the assembly's resources. This particular assembly depends on one other assembly called Tax.