在Visual Studio中的C#项目上移动中间件目录

我目前正在剥离,重构和清理中等规模(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} 

这对于C ++项目来说似乎微不足道,因为您可以指定输出和中间目录。 但是使用C#,至少通过Visual Studio 2008用户界面,似乎无法移动obj目录?

在做了一些挖掘后,我补充道

 ..\..\int\ProjectName\Debug\ 

到C#.csproj

这似乎有用。 确实,中间体似乎在那里结束,但是目录’obj’并且在其下面是配置目录(例如’debug’),然后在旧位置创建’TempPE’目录 – 所有这些都是空的。

这不是什么大不了的事,但知道这种行为的原因并且如果可能的话可以解决它的方法会很好。

提前致谢!

我一直在寻找这个问题的解决方案,并提出了一些不那么具有侵入性的东西。

在某处创建一个名为“CleanSrcDir.bat”的bat文件(我将其置于我的项目路径中),其中包含以下内容:

 rmdir /S /Q %1obj SET %ERRORLEVEL%=0 

在此之后,添加类似于C#项目的后期构建事件:

 $(ProjectDir)CleanSrcDir.bat $(ProjectDir) 

(这假设您将bat文件放在项目目录中。当然。然后将构建后的设置更改为“Always”,您就完成了。

这有点像hackish,但肯定会让版本控制问题消失。

如果将以下两行添加到每个构建配置中,则默认情况下不会创建“obj”文件夹,并且不需要进行构建后操作:

 Assembly\obj\Debug\ Assembly\obj\Debug\ 

如果需要,SVN / SCC忽略属性也很有用

我建议将要忽略的目录添加到SVN ignore属性one-level-up。 此外,当您进行初始提交并且不添加bin和obje目录时,SVN客户端不会发疯。 另请注意,请考虑将生成的文件放入项目的GeneratedFiles子目录中,而不是将该目录检入SVN。