我正在整理我的项目,发现可以通过添加 %TEMP% 来删除 object 文件夹:
rd /s /q "%TEMP%\obj"
但我希望能够在构建后自动删除 obj 目录或者设置全局配置来实现。有什么方法可以做到吗?
我正在整理我的项目,发现可以通过添加 %TEMP% 来删除 object 文件夹:
rd /s /q "%TEMP%\obj"
但我希望能够在构建后自动删除 obj 目录或者设置全局配置来实现。有什么方法可以做到吗?
你在使用源代码控制吗?
这个评论听起来好像你没有:
在归档时,那些不需要的兆字节。
(“归档”有点像定期将整个项目文件夹复制到类似于 backup_yyyymmdd
的地方)
如果你还没有使用源代码控制,你应该考虑开始使用它。
除了一般的优点(例如,具有带有日期和注释的更改历史记录...),它还有一个针对你的 obj
文件夹问题的开箱即用的解决方案:
所有好的源代码控制软件都支持忽略某些文件或文件夹,你可以定义它们(忽略意味着:它们永远不能提交到源代码库中,即使它们被更改,你甚至看不到它们在更改文件列表中的位置)。
例如,在我使用的 Mercurial 中,忽略设置保存在主文件夹中名为 .hgignore
的文件中(Git 也是一样,只是称为 .gitignore
)。
我所有Visual Studio项目的默认.hgignore
文件如下:
syntax: glob
bin
obj
*.suo
*.user
第一行属于Mercurial的忽略语法,其余是设置要忽略的内容。
您可以看到bin
和obj
文件夹被忽略了...无论它们在哪个子文件夹中都会被忽略!
因此,我不必关心obj文件夹实际上在哪里,也不必每次构建解决方案时手动删除它们。它们在我的源代码控制历史记录中根本不存在。
我个人喜欢在项目中有一个特定的Output
文件夹,用于存放所有已编译的文件。
我在后期构建事件中使用以下命令行。
copy "$(TargetPath)" "$(SolutionDir)\Output\$(TargetFileName)"
这将把编译后的文件复制到解决方案内的输出目录。您需要将此添加到解决方案中的所有项目。
如果您有任何需要复制的依赖项,也可以添加类似以下内容的代码。
copy "$(ProjectDir)Dependencies\Language.xml" "$(SolutionDir)\Output\Extensions\Language.xml"
[编辑]
您可以尝试先复制文件,然后在完成后删除对象文件夹。
copy "$(TargetPath)" "$(SolutionDir)\Output\$(TargetFileName)"
rd /s /q "$(ProjectDir)\obj"
[EDIT2] 已更新并附上截图以进行说明。:)
这是编译项目后我的对象文件夹通常的样子。
这是使用上述命令编译后的样子。正如您所看到的,Visual Studio在事件之后重新创建了文件夹,但是文件夹是空的。
您可能需要双重检查是否以提升的权限运行Visual Studio。要这样做,只需右键单击Visual Studio并选择“以管理员身份运行”。
ProjectDir
,而不是 SolutionDir
。 - eandersson