如何将所有引用移动到另一个文件夹中

时间:2013-08-02 19:44:24

标签: .net reference .net-assembly

我有一个包含大量参考资料的项目。它们都与.exe文件位于同一目录中。有时很难找到.exe,因为文件太多了。

如何将引用移动到项目中的另一个文件夹?

1 个答案:

答案 0 :(得分:0)

我的第一个建议是寻找解决问题的简单方法 - 你需要在输出文件夹中找到exe吗? (真的吗?!)你能在更方便的地方放一个.exe的快捷方式,这样你就不必搜索它了吗?您是否可以创建一个批处理文件,将您想要的文件复制到不同的部署位置?你可以自动化你正在做什么摆弄.exe所以你永远不需要自己靠近输出文件夹吗?

如果你真的想玩构建过程,那么......

警告: 使用下面的内容搞乱可能会破坏您的构建,这几乎肯定会导致比以后某些时候更多的麻烦。如果您对结果感到满意,请在备份时仔细尝试并只提交更改!此外,如果您引用文件名,请确保使用相对文件夹路径,否则任何将源代码放入不同文件夹的尝试都会破坏所有内容。

应用程序引用的DLL可以放在.exe旁边的子文件夹中,它应该找到它们并正常运行。但是,默认情况下,Visual Studio构建过程会将引用的dll复制到exe(而不是子文件夹)中。

可以在每个参考的属性中禁用此复制步骤 - 关闭“复制本地”选项。 (您还需要清理Debug / Release文件夹以删除DLL的任何旧副本,否则事情似乎会起作用,但随着旧DLL越来越过时代码更改而逐渐停止工作) 。如果没有在本地复制dll,exe将无法运行,因此您需要创建自己的方法来构建已部署的文件结构(dll的子文件夹)。

有各种解决方案,但最简单的方法之一(最不可能破坏其他任何方法)是添加一个生成后事件命令,将dll文件复制到您的部署位置。您可以将引用复制到.exe旁边的Debug / Release文件夹中,也可以选择将exe及其所有依赖项复制到完全不同的位置。请注意,如果您想避免不必要地降低构建速度,则需要执行“仅限较新版本”。

(另一个选择是更改每个项目的输出文件夹,或整个解决方案构建,但这更有可能打破很多东西)

我不建议这样做。即使你知道自己在做什么,反对正常的构建过程也很可能以一个脆弱或破碎的构建系统结束。