我知道你说你不想使用后期构建事件,但是你为什么不让我感兴趣的原因。听起来您可能在构建后事件中对 .dll 的名称进行了硬编码。这很容易避免。
xcopy "$(TargetDir)*" "c:\common\" /Y
这*
只会导致您的 bin/Debug/ 文件夹中的所有内容都被复制到您的公用文件夹中。如果需要,您也可以只复制 dll。或者,如果您使用$(TargetPath)
,您将只复制作为项目结果的 1 个 dll,而不是任何其他相关的依赖项。
更新
我们这样做的方式是将每个项目的整个 bin 文件夹复制到一个子文件夹中。假设您有 2 个项目,WebUtil
并且HtmlParser
,其中 WebUtil 依赖于 HtmlParser。对于这两个项目,使用xcopy "$(TargetDir)*" "c:\common\$(ProjectName)" /Y
. 这将创建 c:\common\WebUtil\ 和 c:\common\HtmlParser。在 WebUtil 中,添加对 c:\common\HtmlParser\HtmlParser.dll 的引用。现在在 c:\common 中将有 2 个 HtmlParser.dll 副本。
c:\common\HtmlParser\HtmlParser.dll // 最近的构建。c:\common\WebUtil\HtmlParser //构建 WebUtil时的最新构建是什么
这有各种优点。如果您更改 HtmlParser 的 API,WebUtil 将继续工作,因为在您尝试重新构建 WebUtil 之前,它将具有较旧的 HtmlParser.dll(此时您会因为更改的 API 而出现构建错误)。
现在,如果第三个项目依赖于 WebUtil,并且您正在使用 WebUtil 的某些部分在 HtmlParser 中公开类,那么您需要从新项目中添加对这两个项目的引用。添加对 HtmlParser.dll 的引用时,请使用 c:\common\WebUtil 中的引用。您这样做是因为您只是将它作为 WebUtil 的必要要求包括在内。现在,您将始终拥有与您当前版本的 WebUtil.dll 相匹配的 HtmlParser.dll 版本。
我希望这是有道理的。管理这绝对是一件棘手的事情。等到你必须开始使用 svn:externals =P 拉下所有依赖项