Visual Studio 2017:如何让Release目录仅保留必要可重分发DLL
解决VS2017 Release目录包含系统DLL的问题
别担心,这个问题在VS开发里挺常见的,咱们可以通过几种方式配置,让Release目录只保留程序运行必需的、可重分发的DLL:
方法1:调整依赖项的「复制本地」属性
VS会把引用的DLL复制到输出目录,很多时候系统DLL被复制是因为它们的「复制本地」属性被误设为True了:
- 右键你的项目 → 选择「属性」
- 切换到「引用」标签页
- 在列表里找到那些系统级的DLL(比如你截图里的系统相关文件)
- 选中后,在右侧属性面板里把「复制本地」改为
False
小贴士:判断系统DLL的小技巧——像
kernel32.dll、user32.dll这类Windows核心组件,都是系统自带的,完全不需要随程序分发;而像VC++运行时的msvcp140.dll这类属于VS可重分发组件,才需要保留。
方法2:使用VS的部署工具自动筛选
如果是要准备分发的程序,用VS自带的发布向导或者部署项目会更省心,它们会自动识别哪些是需要重分发的文件:
- 右键项目 → 选择「发布」
- 按照发布向导的提示,选择合适的部署方式(比如ClickOnce、Windows Installer)
- 这些工具会自动过滤掉系统自带的DLL,只打包必要的可重分发组件和你的程序文件
方法3:用后期构建事件自动清理
如果上面的方法还没解决,也可以通过添加后期构建命令来自动删除不需要的DLL:
- 右键项目 → 属性 → 切换到「生成事件」标签页
- 在「后期生成事件命令行」里添加删除命令,比如:
del "$(TargetDir)\kernel32.dll" del "$(TargetDir)\user32.dll"
注意:使用这个方法前一定要确认哪些是不需要的DLL,别误删了程序依赖的必要文件!
内容的提问来源于stack exchange,提问作者Dardo
相关产品推荐
相关产品推荐

