Это довольно неразумно, CLR не может найти DLL без посторонней помощи. Ваш клиент не будет беспокоиться о местонахождении библиотеки DLL. На самом деле, я думаю, что большинство ИТ-специалистов предпочитают двоичные файлы в одном каталоге.
Если вы поместите DLL в подкаталог c:\app\bin\dll
, то вы можете использовать файл app.exe.config
с элементом <probing>
, чтобы сообщить CLR, что нужно искать в этом каталоге. Развертывание на c:\app\dll
намного сложнее, оно требует очень непрактичных <codeBase>
в <dependentAssembly>
. Что делает приложение неподвижным, вместо этого предпочтите решение Пьера. За исключением того, что он требует работы, вы хотите использовать Assembly.GetEntryAssembly().Location
, чтобы получить путь установки EXE, чтобы вы могли сгенерировать относительный путь из этого.