C# 在某些方法中,编译会省略固定块后的代码
在我们的一个项目中,我们在一个类中使用了以下方法:C# 在某些方法中,编译会省略固定块后的代码,c#,visual-studio-2013,il,C#,Visual Studio 2013,Il,在我们的一个项目中,我们在一个类中使用了以下方法: private方法() { //为简洁起见,省略了该方法的开头 var nv=新矢量4[x]; 固定(矢量4*vp=nv) { 固定(浮点*tp=/*源浮点ptr*/) { 固定(双*ap=/*源双ptr*/) { 对于(var i=atlArray.Length-1;i>=0;--i) { vp[((i+1)我的同事,也就是受此影响的机器的开发人员,发现构建的诊断输出中存在差异-它是C#编译器。我们认为MSBuild在预期的位置(C:\Pro
private方法()
{
//为简洁起见,省略了该方法的开头
var nv=新矢量4[x];
固定(矢量4*vp=nv)
{
固定(浮点*tp=/*源浮点ptr*/)
{
固定(双*ap=/*源双ptr*/)
{
对于(var i=atlArray.Length-1;i>=0;--i)
{
vp[((i+1)我的同事,也就是受此影响的机器的开发人员,发现构建的诊断输出中存在差异-它是C#编译器。我们认为MSBuild在预期的位置(C:\Program Files(x86)\MSBuild\12.0\Bin)使用了csc.exe,但奇怪的是,它实际上是在C:\Users\[user]中执行csc.exe\AppData\Local\Microsoft\VisualStudio\12.0\Extensions,其版本完全不同。我们不知道该编译器可执行文件是如何出现的,也不知道它是如何被MSBuild引用的,但一旦将其删除,MSBuild将恢复为在其主Bin目录中使用csc.exe版本,并且代码现在正在正确生成。I这不是Roslyn编译器吗?我在C:\Users\Svick\AppData\Local\Microsoft\VisualStudio\12.0\Extensions\2wcdsxyh.slm\rcsc.exe中有它。如果是这样的话,你可能会想要。@Svick这是一个有趣的线索-我会在周一从我的同事那里了解他是否安装了Roslyn编译器,如果他安装了,我会向Roslyn团队报告这个问题。我会回来报到的。
IL_03a1: nop
IL_03a2: ldc.i4.0
IL_03a3: conv.u
IL_03a4: stloc.s ap
IL_03a6: ret
IL_03a5: nop
IL_03a6: ldc.i4.0
IL_03a7: conv.u
IL_03a8: stloc.s ap
IL_03aa: nop
IL_03ab: ldc.i4.0
IL_03ac: conv.u
IL_03ad: stloc.s tp
IL_03af: nop
IL_03b0: ldc.i4.0
IL_03b1: conv.u
IL_03b2: stloc.s vp
IL_03b4: ldarg.0
IL_03b5: ldloc.s nts
IL_03b7: stfld string[] N.B.E.B::ts
IL_03bc: ldarg.0
IL_03bd: ldloc.s nttp
IL_03bf: stfld valuetype [SharpDX]SharpDX.Vector2[] N.B.E.B::ttp
IL_03c4: ldarg.0
IL_03c5: ldloc.s nv
IL_03c7: call instance void N.B.E.B::set_V(valuetype [SharpDX]SharpDX.Vector4[])
IL_03cc: nop
IL_03cd: ret