将.NET程序集从应用程序基目录移开?

时间:2010-03-21 11:28:02

标签: .net assemblies

我有一个带有大量第三方引用的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或其他东西。

必须有一种更好的方法来定义结构: - )

1 个答案:

答案 0 :(得分:1)

如果您在Visual Studio中构建,那么您肯定可以设置构建后的操作 - 它们可以很好地工作。我真的不认为有任何其他好的,有记录的方法来做到这一点。不幸的是,当你引用另一个程序集时,我认为没有选项来定义在构建过程中将引用的DLL复制到的位置。

当然,如果您是从源代码构建这些程序集,那么您可以从一开始就将其输出目录设置为(app)\bin(app)\lib,并且构建过程会将它们吐入从一开始就是正确的目录。

如果您使用的是更复杂的构建服务器,您可能还可以将少量DLL文件移动到该工具中的单独目录中。