2010-03-21 88 views
3

我有一大堆第三方引用的WinForms应用程序。这使得输出文件夹相当混乱。我想将编译/引用的dll放到输出文件夹中的一个公共子目录中,bin/lib - whatever - 并且只是将可执行文件(+需要的configs等)驻留在输出文件夹中。远离应用程序基目录移动.NET程序集?

一些搜索我跑进集探测(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

如果你在Visual Studio中建立一个更好的办法,你绝对可以成立后建设的行动 - 他们很好地工作。我真的不认为还有其他好的,有文件记录的方式来做到这一点。不幸的是,当你引用另一个程序集时,我相信没有选项可以定义将引用的DLL复制到构建过程中的哪个位置。

当然,如果你正在构建从源代码的组件,你可以只设立自己的输出目录是从一开始就(app)\bin(app)\lib和构建过程将他们从一开始吐到正确的目录权走。

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