我有一个带有大量第三方引用的WinForms应用程序。这使输出文件夹相当混乱。我想将编译/引用的dll放在输出文件夹中的公共子目录中,bin / lib - 无论如何 - 只需将可执行文件(+所需的配置等)驻留在输出文件夹中。
经过一些搜索,我遇到了程序集探测(http://msdn.microsoft.com/en-us/library/4191fzwb.aspx) - 并验证了如果我设置它并手动移动程序集,如果它们存储在指定的子目录中,我的应用程序仍然可以工作:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin" />
</assemblyBinding>
</runtime>
</configuration>
但是,这并没有解决构建部分 - 有没有办法指定引用的程序集和编译的库程序集的位置?
只有我能想到的解决方案才是构建后的操作或放弃想法并使用ILMerge或其他东西。
必须有一种更好的方法来定义结构: - )
答案 0 :(得分:1)
如果您在Visual Studio中构建,那么您肯定可以设置构建后的操作 - 它们可以很好地工作。我真的不认为有任何其他好的,有记录的方法来做到这一点。不幸的是,当你引用另一个程序集时,我认为没有选项来定义在构建过程中将引用的DLL复制到的位置。
当然,如果您是从源代码构建这些程序集,那么您可以从一开始就将其输出目录设置为(app)\bin
或(app)\lib
,并且构建过程会将它们吐入从一开始就是正确的目录。
如果您使用的是更复杂的构建服务器,您可能还可以将少量DLL文件移动到该工具中的单独目录中。