我目前正在剥离,重构和清理中等规模(15个项目)的Visual Studio解决方案.该解决方案包含C++和C#中的项目.
我希望在输出方面保持尽可能整洁的东西 - 分离从源代码创建的任何编译器,因为它有助于颠覆(好吧,我可以告诉它忽略文件,但我仍觉得它很混乱)吓坏了.
我想要实现的输出如下:
SolutionDir/
SolutionDir/src/project1/{ Code here }
SolutionDir/int/project1/configuration/{.obj files and other misc compiler junk here}
SolutionDir/bin/project1/configuration/{The fun stuff goes here}
Run Code Online (Sandbox Code Playgroud)
这对于C++项目来说似乎微不足道,因为您可以指定输出和中间目录.但是使用C#,至少通过Visual Studio 2008用户界面,似乎无法移动obj目录?
在做了一些挖掘之后,我补充道
<IntermediateOutputPath>..\..\int\ProjectName\Debug\</IntermediateOutputPath>
Run Code Online (Sandbox Code Playgroud)
到C#.csproj
这似乎有用.确实,中间体似乎在那里结束,但是目录'obj'并且在其下面是配置目录(例如'debug'),然后在旧位置创建'TempPE'目录 - 所有这些都是空的.
这不是什么大不了的事,但知道这种行为的原因并且如果可能的话可以解决它的方法会很好.
提前致谢!
如果将以下两行添加到每个构建配置中,则默认情况下不会创建"obj"文件夹,并且不需要进行构建后操作:
<IntermediateOutputPath>Assembly\obj\Debug\</IntermediateOutputPath>
<BaseIntermediateOutputPath>Assembly\obj\Debug\</BaseIntermediateOutputPath>
Run Code Online (Sandbox Code Playgroud)
如果需要,SVN/SCC忽略属性也很有用
小智 1
我自己一直在寻找解决这个问题的方法,并想出了一些不那么侵入性的方法。
在某处创建一个名为“CleanSrcDir.bat”的bat文件(我将其放置在我的项目路径中),其中包含以下内容:
rmdir /S /Q %1obj
SET %ERRORLEVEL%=0
Run Code Online (Sandbox Code Playgroud)
之后,添加类似于 C# 项目的构建后事件的内容:
$(ProjectDir)CleanSrcDir.bat $(ProjectDir)
Run Code Online (Sandbox Code Playgroud)
(当然,这假设您将 bat 文件放在项目目录中。)然后将构建后设置更改为“始终”,就完成了。
这有点hackish,但确实可以解决版本控制问题。