#VSTS日志# 15/11/18 插件应用商场,SportageM,包管理器等

【作者】从前几日开班,作者将在这几个博客上连载Visual Studio Team
Service的限期更新。VSTS是Team Foundation Server
的在线版本,微软每3周会对这一个服务举行更新,每四个月又会将累积的改动提要求合作社版的TFS升级包。仅此,假诺要打听TFS的新职能,这份日记将是您最佳的消息来自。

上次小编分别测试了类与结构体(http://www.cnblogs.com/zyl910/archive/2011/09/19/2186623.html)、密封类(http://www.cnblogs.com/zyl910/archive/2011/09/20/2186622.html)的函数调用速度评测。以往展开越发分析,解读编写翻译器生成的MSIL(微软个中语言)代码。

以下是二零一四年七月4日的更新日志:

壹 、中期准备

后天是我们的Connect();开发人士在线发表会,大家公布了累累重量级的功效:

先找到“IL 反汇编制程序序”(开端\程序\Microsoft Visual Studio
2010\Microsoft Windows SDK Tools\)——

Visual Studio Team Services

首先个重要改变是大家将Visual Studio Online (VSO)改名为Visual Studio Team
瑟维斯s
(VSTS)。这只是称呼上的更动,不会对大家的url发生震慑,比如:你的账号地址将保持一致 <account>.visualstudio.com 。
大家看看恒河沙数人将Visual Studio Online
误认为是个在线的IDE环境,但实际并不是。本次改名的指标正是为着祛除那个误解。你可能还并未在友好的账号上看知名称的修改,那是因为我们的配备正在日渐拓展。

图片 1

插件应用市集

明天我们揭露了VSTS的全新扩充机制以及使用市集,通过这么些市镇你能够获得并设置那么些插件。以后的插件可以提供VSTS内置作用雷同的用户体验,能够提供新成效照旧合并别的服务。扩大可以在hub,定制控件,右键菜单,仪表盘,创设和揭露职务等大多全部的VSTS作用上选取。

由此运用市镇,用户能够发现新的插件,开发人士能够交给插件;不相同档次的插件能够独家在Visual
Studio , Visual Studio Team Services 和 Visual Studio
Code上使用,能够收费也足以防费。

地址:https://marketplace.visualstudio.com/

图片 2

方今的施用集镇里曾经有了必然数额的VSTS插件可供安装,但大家需求越来越多的插件来充实那个市镇,开发插件其实极度不难,具体请见: http://aka.ms/vsoextensions

运维“IL
反汇编制程序序”,打开编译后的exe。展开节点,双击叶子节点查看MSIL代码——

Release Management (发布管理器)公众预览版

前些天大家还宣布了预览版的Release
Management服务。使用CR-VM服务,你能够创立从开发到生产条件的自动化发表管道,当中能够定义分裂的条件并对手工业测试,审核流程进行控制。悍马H2M服务作为DevOps服务的骨干环节能够援助您的团体更快的颁发版本并降低发表危机。

要接纳途观M其实相当粗略,成立一个公告定义,在其间插手你的昭示步骤并放入到管道中的不一致条件上即可。这个发表步骤能够自动化的姣好软件陈设并对其展开测试。奥迪Q3M服务还是能够和build系统举办合并,在build实现可能前序环境成功安顿后自行运行后续环境的安排。

图片 3

周旋于老版本的SportageM的重中之重立异:

  • 不必安装其余客户端,全数操作均选用浏览器实现
  • 所使用的布局代理,职分和插件均和老版本一致;能够实现无缝升级
  • 选用起来更为简便易行

新版福特Explorerm的相干文书档案链接: http://aka.ms/rmpreview

图片 4

包管理器公众预览版

前些天大家公告了崭新的Package Management Service(包管理器)的Subaru预览版,提供了对nuget包的帮忙,后续我们将拉长更七种类包的支撑,如:npm等。

利用那几个服务,你能够轻松创造团队协调的nuget源地址。管理你所引用的各样开源包,也足以将自身的私有包发表到此地供别的团体利用。VSTS的build和揭露种类提供了对包管理器的支持,你能够在build
vNext直接添加宣布nuget包的职分。

插件地址:https://marketplace.visualstudio.com/items/ms.feed

图片 5

② 、结果分析

代码搜索公众预览版

提供对TFVC或GIT代码库的代码搜索效果,不仅仅提供文本搜索,对于C#,C 和
C++,你还足以本着差别的语言特征开展搜索,如:类定义,注释,属性等。代码搜索作为利用市镇中的插件提供。

插件地址: https://marketplace.visualstudio.com/items/ms.vss-code-search

图片 6

接下来大家将测试函数调用的那行代码复制提取出来。如上海教室的“IL_004c”行。
在复制提取进度中,发现VS二零零五与VS2008生成的函数调用代码是一心平等的。删除啰嗦的名号空间,将结果整理为表格——

营造日志中体现测试结果

测试是DevOps中的首要一环,这一次的翻新立异了对营造日志中的测试结果展现。

在构建日志中式点心击“测试”页即可看出新的界面。首先会展现的是测试的完整运转总结,上三遍创设中的测试总结等音信;如若测试在上二遍营造中经过,而在现阶段构建失利,则会呈现为“New
failure”,那足以扶持您快捷识别测试回归难题。假设有点测试一直都未果,你则足以很不难的找到第一次失败的这一次创设,急迅定位难点。

同时我们也更上一层楼了对破产测试结果的浏览体验,使用容器,优先级等分化方法进行分组;进入到一定测试结果后,会来得相关的error
message,stack trace和附属类小部件等详细数据。

继承我们还将添加如趋势图,历史结果等内容。越来越多音讯请访问:http://blogs.msdn.com/b/visualstudioalm/archive/2015/11/13/test-results-in-build.aspx

图片 7

模式 MSIL 亮点
静态调用 call       uint8*  TryIt_Static_Ptr(uint8*) 静态函数
调用派生类 callvirt   instance uint8*  PointerCall::Ptr(uint8*) 虚方法
调用密封类 callvirt   instance uint8*  SldPointerCallAdd::Ptr(uint8*) 虚方法
调用结构体 call       instance uint8*  SPointerCallAdd::Ptr(uint8*) 方法(非虚)
调用基类 callvirt   instance uint8*  PointerCall::Ptr(uint8*) 虚方法
调用派生类的接口 callvirt   instance uint8*  IPointerCall::Ptr(uint8*) 虚方法
调用密封类的接口 callvirt   instance uint8*  IPointerCall::Ptr(uint8*) 虚方法
调用结构体的接口 callvirt   instance uint8*  IPointerCall::Ptr(uint8*) 虚方法
基类泛型调用派生类 call       uint8*  CallClassPtr<class PointerCallAdd>(!!0, uint8*) class
基类泛型调用基类 call       uint8*  CallClassPtr<class PointerCall>(!!0, uint8*) class
接口泛型调用派生类 call       uint8* CallPtr<class  PointerCallAdd>(!!0, uint8*) class
接口泛型调用密封类 call       uint8* CallPtr<class  SldPointerCallAdd>(!!0, uint8*) class
接口泛型调用结构体 call       uint8*  CallPtr<valuetype SPointerCallAdd>(!!0, uint8*) valuetype
接口泛型调用结构体引用 call       uint8*  CallRefPtr<valuetype SPointerCallAdd>(!!0&, uint8*) valuetype
接口泛型调用基类 call       uint8* CallPtr<class  PointerCall>(!!0, uint8*) class
接口泛型调用派生类的接口 call       uint8* CallPtr<class  IPointerCall>(!!0, uint8*) class
接口泛型调用密封类的接口 call       uint8* CallPtr<class  IPointerCall>(!!0, uint8*) class
接口泛型调用结构体的接口 call       uint8* CallPtr<class  IPointerCall>(!!0, uint8*) class

探索测试插件

从2009版本开端,VSTS
就曾经提供了很好的研究测试补助,能够收集步骤,荧屏截图,日志并付诸bug。明日我们揭发了依照浏览器的切磋测试插件。使用Chrom浏览器,在别的平台上(Windows,
Mac,
Linux)上做到探索测试操作。后续大家将助长对别的浏览器的支撑,如:艾德ge,firefox等。

插件地址: https://marketplace.visualstudio.com/items/ms.vss-exploratorytesting-web
越多音信: http://blogs.msdn.com/b/visualstudioalm/archive/2015/11/19/announcing-easy-to-use-web-based-exploratory-test-for-visual-studio-team-services.aspx

图片 8

考察地点的报表,我们发现——
1.编译的IL代码时,并不曾做内联(inline。将子函数展开)优化,而根据语义统统编写翻译为不相同的调用(call)。看来优化办事是JIT(即时编写翻译器)负责的。
2.调用结构体是 方法调用(call
instance)。JIT可依照此音信安顿内联优化。
3.调用派生类是 虚方法调用(callvirt instance)。因为被编写翻译为
调用基类的虚方法(PointerCall::Ptr),所以JIT认为其是常规的虚方法调用,不优化。
4.调用密封类是 虚方法调用(callvirt
instance),与派生类调用一致。但出于其雁过拔毛了类型新闻(SldPointerCallAdd::Ptr),JIT发现它是1个密封类,于是安顿内联优化。
5.泛型方法即便也是用call指令,但它包蕴泛型参数,所以其作为与一般call调用不相同。
6.结构体调用泛型方法时,会利用valuetype关键字。JIT可依据此音讯布置优化(VS005的JIT有所优化;而VS2010的JIT将其实行到底的内联优化)。

测试管理器插件

测试管理成效在VSTS中是能够独自购买的,前天我们将测试管理器作为插件放到了利用商场上,那样你就无需服从用户级别购买测试成效,而得以直接购销插件。

插件地址: https://marketplace.visualstudio.com/items/ms.vss-testmanager-web

图片 9

原来的小说地址: https://www.visualstudio.com/en-us/news/2015-nov-18-vso


请关怀微信公众号 devopshub,获取越多关于DevOps研究开发运行一体化的音信

图片 10

 

或点击进入 DevOps门户 http://devopshub.cn 

 

 

附录A、转为接口时的IL代码

派生类转为接口——
  IL_001d:  ldloc.0
  IL_001e:  stloc.s    V_4

密封类转为接口——
  IL_0020:  ldloc.1
  IL_0021:  stloc.s    V_5

结构体转为接口——
  IL_0023:  ldloc.2
  IL_0024:  box        TryPointerCall.SPointerCallAdd
  IL_0029:  stloc.s    V_6

可见结构体转为接口时多了装箱操作,影响了品质。

附录B、结构体泛型调用的IL代码

接口泛型调用结构体——
  IL_0391:  ldloc.2
  IL_0392:  ldloc.s    V_7
  IL_0394:  call       uint8*
TryPointerCall.PointerCallTool::CallPtr<valuetype
TryPointerCall.SPointerCallAdd>(!!0,uint8*)

接口泛型调用结构体引用——
  IL_03dd:  ldloca.s   V_2
  IL_03df:  ldloc.s    V_7
  IL_03e1:  call       uint8*
TryPointerCall.PointerCallTool::CallRefPtr<valuetype
TryPointerCall.SPointerCallAdd>(!!0&,uint8*)

足见泛型调用的IL代码并不复杂,与常见调用基本一样,也是先将参数放入堆栈再call。对于引用参数,将“ldloc.*”指令换到“ldloca.s”指令就行了。

(完)

 

目录——
C#类与结构体毕竟何人快——各个函数调用形式速度评测:http://www.cnblogs.com/zyl910/archive/2011/09/19/2186623.html
再探C#类与结构体终归什么人快——考虑栈变量、栈分配、六11个人整数、密封类:http://www.cnblogs.com/zyl910/archive/2011/09/20/2186622.html
三探C#类与结构体毕竟什么人快——MSIL(微软中路语言)解读:http://www.cnblogs.com/zyl910/archive/2011/09/24/2189403.html
四探C#类与结构体毕竟哪个人快——跨程序集(assembly)调用:http://www.cnblogs.com/zyl910/archive/2011/10/01/2197844.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图