Прежде чем начать, сделайте глубокий вдох и точно определите, почему вы этого хотите, потому что часто это усложняет ситуацию без особого выигрыша.
Вы можете сделать это, используя зондирование сборки.
Во-первых, Это хорошая вещь, чтобы прочитать это: https://docs.microsoft.com/en-us/dotnet/framework/deployment/how-the-runtime-locates-assemblies
где-то в статье это:
Атрибут privatePath элемента, который является пользовательский список подкаталогов в папке root. Это местоположение можно указать в файле конфигурации приложения и в управляемом коде, используя свойство AppDomainSetup.PrivateBinPath для домена приложения.
И мы можем увидеть, как это делается в документах зондирующего тега; https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/probing-element
Добавьте файл app.config в свой проект и отредактируйте его следующим образом:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin\REEE;someTestPath"/>
</assemblyBinding>
</runtime>
</configuration>
Теперь, когда DLL добавляется в качестве ссылки, он автоматически копируется в вашу выходную папку. Однако мы хотим, чтобы вместо этого DLL находилась в подпапке. Есть два способа сделать это, о которых я знаю:
- Скопировать DLL из выходного каталога в ваш подпуть. Вы можете использовать задачу после сборки и, например, xcopy, чтобы сделать это (Google вокруг этого не должен быть сложным). Вы также можете использовать задачи msbuild для копирования dll
- Добавить dll в качестве содержимого в одноименную подпапку в csproj, настроенную для копирования local. Смотрите картинку ниже.
Также проверьте соответствующий ответ:
{ ссылка }
Я настоятельно рекомендую вам не надевать не делайте этого, если у вас нет очень веских причин для этого. И в этот момент мне интересно, что это за причина:)