Before starting, take a deep breath and determine exactly why you want this, because often this complicates things without much gain.
You can do this by using assembly probing.
First, its a good thing to read this firts:
https://learn.microsoft.com/en-us/dotnet/framework/deployment/how-the-runtime-locates-assemblies
somewhere in the article is this:
The privatePath attribute of the element, which is the
user-defined list of subdirectories under the root location. This
location can be specified in the application configuration file and in
managed code using the AppDomainSetup.PrivateBinPath property for an
application domain.
And we can see how its done in the docs of the probing tag;
https://learn.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/probing-element
Add an app.config file to your project and edit it like so:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin\REEE;someTestPath"/>
</assemblyBinding>
</runtime>
</configuration>
Now, when the dll is added as a reference, its automatically copied to your output folder. We however want the dll to be in the subfolder instead. There're two ways you can do this that i know of;
- Copy the dll over from the output directory to your subpath. You can use a post-build task and e.g. xcopy to do this (google around this shouldn't be hard). You could also use msbuild tasks to copy the dll
- Add the dll as content to a samely named subfolder in the csproj, set to copy local. See the picture below.

Also check this relating answer:
https://stackoverflow.com/a/58124935/4122889
I highly suggest you don't do this unless you have a very good reason to do so. And at that point i'm curious as to what that reason is :)