在开始之前,深呼吸并确定你想要这个的确切原因,因为这通常会使事情复杂化而没有太多收获。
您可以通过使用装配探测来做到这一点。
首先,首先阅读这篇文章是一件好事:
https ://docs.microsoft.com/en-us/dotnet/framework/deployment/how-the-runtime-locates-assemblies
文章的某处是这样的:
元素的 privatePath 属性,即用户定义的根位置下的子目录列表。可以使用应用程序域的 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 中的同名子文件夹中,设置为复制本地。见下图。

还要检查这个相关的答案:
https://stackoverflow.com/a/58124935/4122889
我强烈建议您不要这样做,除非您有充分的理由这样做。那时我很好奇这个原因是什么:)