Поиск

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

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

// 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