Если вы не хотите распространять сторонние dll-файлы своими собственными, вы можете:
1) Укажите требования и примите, что dll будет установлен в GAC. Это не будет работать большую часть времени, и наличие сборок локально служит цели: ваше приложение не должно ломаться, если какое-то общесистемное обновление портит ваши зависимости.
2) Укуси пулю и раздавай сторонним dll своим.
3) Если это разрешено законом (следите за лицензионным соглашением сторонней библиотеки dll), используйте IL Merge для статической связи ваших сборок (вашей и любой третьей стороны). С ILMerge вы можете получить единую сборку, содержащую все ваши ссылки. Вы объединяетесь только при упаковке для развертывания (есть специальные задачи msbuild / NAnt, которые делают это за вас), когда при развертывании в VS вы просто продолжаете делать как обычно (ссылаясь на сборки). ILMerge используется во многих проектах для создания автономного компактного исполняемого файла (на ум приходит LinqPad).