В книге Джеффри Рихтера "CLR via C#" второго издания эта тема раскрыта достаточно полно, но мне потребовалась небольшая практика, чтобы изложенное окончательно запомнить.
В следующей статье на MSDN азы создания многофайловых сборок описаны достаточно подробно:
http://msdn.microsoft.com/ru-ru/library/226t7yxe(v=vs.110).aspx
Настоящий пост будет просто попыткой применения этой инструкции на практике. При этом я испытываю сомнения в том, что многофайловые сборки находят применение в реальных коммерческих продуктах достаточно часто для того, чтобы подробно разбирать эту тему.
В пользу редкости такого решения говорит хотя бы тот факт, что даже в новых версиях (2013)Visual Studio многофайловые сборки не поддерживаются, их можно создать только пользуясь компилятором и специальными ключами командной строки.
Итак, попробуем создать многомодульную сборку.
Для начала создаю проект в двенадцатой студии – обычное консольное приложение с одним классом Karcher, у которого один метод Wash():
Теперь компилируем класс Karcher в модуль с помощью csc.exe:
На выходе получаем модуль Karcher.netmodule
Дальше компилируем файл программы, указывая в параметрах компилятора только что созданный модуль:
Получаем сборку в виде dll, под которую надо подложить модуль с Кёрхером, чтобы всё работало.
В следующей статье на MSDN азы создания многофайловых сборок описаны достаточно подробно:
http://msdn.microsoft.com/ru-ru/library/226t7yxe(v=vs.110).aspx
Настоящий пост будет просто попыткой применения этой инструкции на практике. При этом я испытываю сомнения в том, что многофайловые сборки находят применение в реальных коммерческих продуктах достаточно часто для того, чтобы подробно разбирать эту тему.
В пользу редкости такого решения говорит хотя бы тот факт, что даже в новых версиях (2013)Visual Studio многофайловые сборки не поддерживаются, их можно создать только пользуясь компилятором и специальными ключами командной строки.
Итак, попробуем создать многомодульную сборку.
Для начала создаю проект в двенадцатой студии – обычное консольное приложение с одним классом Karcher, у которого один метод Wash():
csc.exe /t:module Karcher.cs
На выходе получаем модуль Karcher.netmodule
Дальше компилируем файл программы, указывая в параметрах компилятора только что созданный модуль:
csc.exe /out:MultiFileAssembly.dll /t:library /addmodule:Karcher.netmodule Program.cs
Получаем сборку в виде dll, под которую надо подложить модуль с Кёрхером, чтобы всё работало.
