Как я уже говорил, Microsoft предлагает ILMerge, но если вы не хотите использовать стороннее приложение, вы можете написать его самостоятельно. Вашему клиенту по-прежнему понадобится .Net Framework, но он позволит вам скрыть ваши зависимости. Если вы хотите включить также .Net dll, вы должны установить для своих ссылок «copy local» в настройках ссылок.
Эта программа требует, чтобы вы добавили вашу dll в качестве ресурса. Всякий раз, когда вашей программе требуется dll, она будет загружать ее по требованию с помощью ловушки разрешения сборки. Если бы у вас было несколько библиотек DLL, вы должны иметь случай переключения или поиск по списку, который загрузил правильную библиотеку DLL на основе ResolveEventArgs.Name.
Module Program
''//Entry Point add dependency resolver hook
Sub Main()
AddHandler AppDomain.CurrentDomain.AssemblyResolve, _
AddressOf AssemblyReslover
End Sub
Private Function AssemblyReslover(ByVal sender As Object, _
ByVal e As ResolveEventArgs) _
As Assembly
''//ReferenceAssembly
Dim ra As Assembly
ra = Assembly.Load(My.Resources.MyDLL)
Return ra
End Function
End Module
http://support.microsoft.com/kb/837908