Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 F#大型解决方案-构建时间长_Visual Studio 2010_F# - Fatal编程技术网

Visual studio 2010 F#大型解决方案-构建时间长

Visual studio 2010 F#大型解决方案-构建时间长,visual-studio-2010,f#,Visual Studio 2010,F#,在我目前的项目中,我们有一个非常大的F#项目解决方案。我在这里说的真的很重要。它的70个F#项目(480.fs文件)和4个C#项目 正如你可能猜到的,这开始成为一个问题。首先,在VisualStudio中进行管理需要很长时间。但它也需要太长的时间来建立-上次我检查它花了约3分钟在我的机器上 我知道有(不受支持的?)方法来组织中的F#文件,但考虑到解决方案的大小,我害怕通过它手动执行。此外,我们希望非常确定它将提高构建时间 所以,现在我的问题是——合并成更少的项目会减少构建时间吗?比如说,我们将项

在我目前的项目中,我们有一个非常大的F#项目解决方案。我在这里说的真的很重要。它的70个F#项目(480.fs文件)和4个C#项目

正如你可能猜到的,这开始成为一个问题。首先,在VisualStudio中进行管理需要很长时间。但它也需要太长的时间来建立-上次我检查它花了约3分钟在我的机器上

我知道有(不受支持的?)方法来组织中的F#文件,但考虑到解决方案的大小,我害怕通过它手动执行。此外,我们希望非常确定它将提高构建时间

所以,现在我的问题是——合并成更少的项目会减少构建时间吗?比如说,我们将项目减少到5-10个,而不是今天的70个


如果没有,我们能做些什么?您如何管理这种规模的项目?

尝试过的SSD和RAM驱动器没有多少用处

项目之间的依赖关系可能会阻止您从增加并发生成的数量中获得任何东西

我有点惊讶你在70个项目中有480个.fs文件。。。这相当于每个项目6-7个文件,这并不多。不管怎么说,这可能值得一看,即使这不是出于性能原因——无论哪种方式,都可能存在(将?)设计问题。但构建时间似乎与每个项目的文件(或LOC)数量一致,因此您可能不会压缩到您想要的程度

因为这个原因,我个人已经失去了每次打扫和重建的习惯

编辑:在Expert F#中找到了一条相关注释,我认为值得一提:

.NET assemblies often contain a large amount of code. For example, a single assembly may contain as 
many as 50 or 100 F# source code files. Having many small assemblies may seem tempting, such as to improve 
compilation times during development, but can lead to difficulties when you’re managing updates and can be 
confusing to end users. Large assemblies are easier to version: you have to update only one component, and you 
can package multiple updates into a single new version of the DLL
如果F#编译速度非常慢,可能是因为在最近的.net framework更新之后,NGEN没有运行。请看这两个stackoverflow问题:有关更多信息,我不能说是大型F#解决方案,但我用大型C#解决方案做到了这一点,并且看到构建时间大幅下降。e、 g.一个解决方案有约100个项目,我们将其减少到约20个,构建时间从>10分钟减少到<5分钟


收益主要来自减少依赖项检查和文件从一个项目的生成输出文件夹复制到另一个项目的次数。

是否启用了并发生成?你的计算机有多强大?F#编译器比其他编译器慢得多,我没有看到许多小项目和单个大项目之间有什么不同。你每次都需要完整的编译吗?如果没有,您可以卸载您没有在VS中处理的项目(只是卸载之前的完整构建)。然后,只编译加载的项目而不是卸载,可以在“解决方案属性”窗口中设置应生成哪些项目。工具|选项|项目和解决方案|生成并运行|
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。。。我认为你是对的,但我还不能完全肯定。LOC可能是最重要的事情。但是-对于Vs2010中的纯可读性和管理,我们可能会尽量减少项目的数量,您可能无法从合并项目中获得显著的构建时间改进,这是一个相当艰难的实验。我甚至不确定将代码严重重构为高阶函数是否会产生改进或降级。@DavidGrenier:FWIW,每个项目6-7个文件对我来说是合理的。遗憾的是,我们的单个项目运行速度非常快。因此,如果我自己编译一个小项目(没有依赖项),它很快就会完成。听起来是个好主意,我想你说得很对。我删除了大约20个项目,并获得了足够的资金,使其可以公开。主要是由于项目之间的耦合较少。