Принципы объектно-ориентированного программирования

         

Создание сборок из нескольких модулей



Создание сборок из нескольких модулей

Поместить оба модуля из нашего примера в одну сборку можно двумя способами. Во-первых, можно изменить переключатели, которые используются с компилятором:

// Module2Server.cs

// компоновка со следующими переключателями командной строки:

// esc /t:module Module2Server.cs


internal class Module2Server

{

}

Обратите внимание, что теперь мы можем указать модификатор доступа internal, при использовании которого класс доступен лишь коду в пределах этой сборки.

// Hodule2ClientApp.es

// компоновка со следующими переключателями командной строки:

// esc /addmodule:Module2Server.netmodule Module2ClientApp.cs

using System;

using System.Diagnostics;

using System.Reflection;

class Module2ClientApp {

public static void MainQ {

Assembly DLLAssembly =

Assembly.GetAssembly(typeof(Module2Server)); Console.WriteLine("Module1Server.dll Assembly Information"); Console.WriteLine("\t" + DLLAssembly);

Process p = Process.GetCurrentProcessO; string AssemblyName = p.ProcessName + ".exe"; Assembly ThisAssembly = Assembly.LoadFrom(AssemblyName); Console.WriteLine("Module1Client.dll Assembly Information"); Console.WriteLine("\t" + ThisAssembly); } }

Обратите внимание на то, как компонуются Module2Server.cs и Modu-le2Client.exe:

esc /t:module Module2Server.cs

esc /addmodule:Nodule2Server.netmodule Module2Client.cs

Прежде всего вы должны удалить переключатель /г, поскольку он служит только для ссылки на сборки, а сейчас оба модуля будут находиться в одной сборке. Далее вы должны вставить переключатель /addmodule, который указывает компилятору, какие модули добавить к создаваемой сборке.

При компоновке и запуске приложения теперь получатся следующие результаты:

Module1Server.dll Assembly Information

Module2Client, Version=0.0.0.0, Culture=neutral,

PublicKeyToken=null Module1Client.dll Assembly Information

Module2Client, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null

Сборку можно создать и с помощью Assembly Generation. Эта утилита принимает один или несколько файлов — модулей .NET (содержащими MSIL) или файлов ресурсов и образов. На выходе получается файл с декларацией сборки. Так, чтобы объединить несколько DLL, которые вы хотели бы распространять как единый файл и контролировать их версии как у единого целого, обратитесь к услугам Assembly Generation. Если ваши DLL называются A.DLL, В.DLL и С.DLL, то вы создадите композитную сборку, используя приложение al.exe следующим образом:

al /out:COMPOSITE.DLL A.DLL В.DLL С. DLL



Содержание раздела