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