我觉得这很容易,但我的脑子现在正在融化......
鉴于以下IObservable<int>流:
1
1
0
0
0
1
0
0
1
0
1
我想将它拆分为IObservable<IEnumerable<int>>表单的Stream
1
1 0 0 0
1 0 0
1 0
1
因此,只要有0,它就会被添加到IEnumerable中,当1出现时,会启动一个新的List; 对于我的真正问题,这是一个更清晰的定义.
我认为一个好的解决方案是首先将它转换为一个IObservable<IObservable<int>>通过Window方法,然后使用ToEnumerable,但不知何故我不能让它工作..我用Zip和Skip(1)得到一个差异到最后一个元素,我也用过DistinctUntilChanged().我饶了你试过的所有variantes ......
可能我最接近的是这段代码:
int[] ints = new[] { 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1 };
var observable = Observable.Interval(TimeSpan.FromMilliseconds(1000)).Take(11).Select(i => ints[i]);
Subject<int> subject = new Subject<int>();
observable.Subscribe(subject);
var observableDiff = …Run Code Online (Sandbox Code Playgroud) 也许这只是一个疯子的梦想,但..
在我的公司,我们有一个很大的C#.NET项目,有大约25个解决方案(非常老)和~3.5 mio.同上.我面临的问题是:构建时间太慢,现在使用SSD(开发机器)需要7分钟,使用普通硬盘驱动器需要15分钟+(我希望部署的是TeamCity构建系统).我知道,构建系统应该是最快的,但这在短期内我无法改变.
我想简化devs的commit-build-unittest反馈循环(最好是现在在Teamcity机器上),只需编译上次提交触及的项目,从本地nuget服务器获取所有其他程序集(teamcity服务器本身版本为7.0).
现在,对于小型提交,这将极大地减少反馈循环(15分钟到不到一分钟,给定真实的单元测试).
我知道这种部分编译的问题是跳过编译错误的可能性(不匹配的接口可能会被忽视),但是这可以通过运行第二个(Teamcity?)构建服务器实例来缓解,该实例同时运行整个enchilada.但立即获得第一反馈对我来说非常重要.
现在我的问题是:有没有可以处理这项任务的构建系统/连续集成系统?或者我是否必须编写自己的提交感知后台服务?这会有点讨厌,因为我们使用FinalBuilder Scripts,并且Format似乎没有任何API可读(但没有深入挖掘).
PS:另外,我想只为最后一次提交改变的项目运行单元测试,或者至少对它们进行优先级排序.但那是事后的想法.