【发布时间】:2017-01-02 11:20:04
【问题描述】:
以下代码示例演示了我在 Visual Studio 2012 和 2015(MSBuild 4 和 14)之间看到的差异。它基于本文中的描述:
Compiler Warning (level 4) CS0429
namespace UnitTestProject1
{
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
[TestClass]
public class UnitTest1
{
[TestMethod]
public void Test_CS0429()
{
if (false && ReturnTrue()) // CS0429
{
Assert.Fail();
}
}
static bool ReturnTrue(){return true;}
}
}
当我使用 MSBuild 4 编译它时,我正确地收到了警告 CS0429,但是当我在 MSBuild 14 中编译相同的代码时,我没有收到警告。该行为在 Visual Studio 中是可重复的。
我使用的 MSBuild 的具体版本是 4.6.1055.0 和 14.0.25420.1。
谁能解释这种差异,我希望/期望警告在版本之间保持一致?
可能相关的是正在运行的 csc.exe 版本
C:\Program Files (x86)\MSBuild\14.0\bin\csc.exe 版本 1.3.1.60616
对比:
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Csc.exe 版本 4.6.1055.0
【问题讨论】:
-
有趣,出于好奇,如果单元测试根据 msdn 是静态的,是否有区别?
-
@JeremyThompson 不,结果是一样的,我只是从 msdn 的代码中得到了一些其他的 resharper 警告。