【问题标题】:A way to delete and recopy a .dll for each re-compile?为每次重新编译删除和重新复制 .dll 的方法?
【发布时间】:2017-03-25 05:34:36
【问题描述】:
基本上,我有两个项目,一个编译为 dll,另一个使用该 dll。现在我有一个预构建脚本,它将 dll 复制到依赖项目的二进制文件夹中以供使用:
copy "$(SolutionDir)\DLLProj\Binaries\$(PlatformName)_$(Configuration)\DLLProj.dll" "$(SolutionDir)\DependentProj\Binaries\$(PlatformName)_$(Configuration)\"
这个脚本似乎在第一次构建时复制了 dll,但在随后的构建和运行中它没有被更新。起初我认为这是因为我的 dll 没有被重建,但我不认为是这种情况。我唯一能想到的是,也许我的复制命令仅在我的依赖项目文件夹中没有找到 dll 文件时才运行?所以旧的 dll 就在那里,除非我清理或重建我的项目,然后将一个新的 dll 复制到该位置。如果是这种情况,是否有命令确保在退出时从我的依赖项目中删除或删除 dll?或任何其他方式来确保在后续构建中正确的 dll?
【问题讨论】:
标签:
c++
visual-studio
dll
visual-studio-2015
command-line-arguments
【解决方案1】:
通常的解决方案是xcopy /d。此标志告诉 xcopy 仅在目标已过时或丢失时才复制您的 DLL。
【解决方案2】:
编辑:
尝试修改您的复制命令(确保使用echo y|copy 替换现有文件):
echo y|copy "$(SolutionDir)\DLLProj\Binaries\$(PlatformName)_$(Configuration)\DLLProj.dll" "$(SolutionDir)\DependentProj\Binaries\$(PlatformName)_$(Configuration)\"
并且确保copy command在您构建DllProject之后运行。
另一种解决方案:
我更喜欢使用.bat:
1.delete旧版.dll文件:
echo y|del "$(SolutionDir)\DependentProj\Binaries\$(PlatformName)_$(Configuration)\DLLProj.dll"
2.copy更新版本
copy "$(SolutionDir)\DLLProj\Binaries\$(PlatformName)_$(Configuration)\DLLProj.dll" "$(SolutionDir)\DependentProj\Binaries\$(PlatformName)_$(Configuration)\"
因此,您的 .bat 文件应如下所示:
echo y|del "$(SolutionDir)\DependentProj\Binaries\$(PlatformName)_$(Configuration)\DLLProj.dll"
copy "$(SolutionDir)\DLLProj\Binaries\$(PlatformName)_$(Configuration)\DLLProj.dll" "$(SolutionDir)\DependentProj\Binaries\$(PlatformName)_$(Configuration)\"