我的情况
在C#项目中我正在研究我们有一个相当大的解决方案(80多个项目).现在重建时间为5分钟+使用Visual Studio 2008中的 MSBuild确实变得非常困难.
在我上周做的分析中,我发现我的构建时间花费如下:
将文件复制到项目并将其重新复制到依赖于它的项目(CopyToLocal)等(60%)
调用postbuild进行反编译/编译.(20%)
进行实际编译等(20%)
除了'普通'项目bin\debug
文件夹输出也被复制到外部目录以设置主'加载'程序.主程序结构有点像这样:
\loader\bin\loader.exe
\loader\plugin\plugin1\plugin1.dll
\loader\plugin\plugin1\somedependency.dll
Run Code Online (Sandbox Code Playgroud)
我做了什么
为了让事情变得更快,我想到了以下几点:
将所有文件复制到一个大bin目录,不要使用CopyTolocal.我不喜欢这个,因为我们不能再使用相同DLL文件的不同版本,而且我的bin目录变得非常混乱.
对MSBuild使用并行性(/ m).这对构建时间的帮助很小.
尝试减少项目之间的依赖关系,这当然是一件好事.
投资硬件.我发现了一些关于固态驱动器的研究,但这似乎并不乐观.
我的问题
我还注意到,当我对依赖树的根目录下的项目进行更改时,所有内容都会重建.即使改变仅在"私人"部分,并且项目的界面没有改变.
MSBuild是否使用依赖项目的时间戳来确定项目是否需要重建?
这可以改为不同的条件吗?例如,文件的校验和?
除了这个特定的建议,我一定会感谢所有建议,以使构建时间更快.