有可能,如果是这样,如何让Visual Studio在代码中突出显示动态表达式?
当我只是在一些代码上面徘徊时,visual studio告诉我这是一个动态表达.这让我意识到我在我的代码中犯了一个错误并使用了一个动态太多.但我也意识到,如果我没有徘徊,那么应该是静态的"大片"动态代码就会逃脱.
所以我想知道是否有可能使Visual Studio改变动态表达式的背景颜色,因此这些部分将清晰可辨.
[edit]
动态表达式是指在常规代码中使用dynamic关键字.
dynamic-language-runtime syntax-highlighting visual-studio-2010 visual-studio dynamic-code
public void MyTest()
{
bool eventFinished = false;
myEventRaiser.OnEvent += delegate { doStuff(); eventFinished = true; };
myEventRaiser.RaiseEventInSeperateThread()
while(!eventFinished) Thread.Sleep(1);
Assert.That(stuff);
}
Run Code Online (Sandbox Code Playgroud)
为什么eventFinished不能变得不稳定并且重要吗?
在我看来,在这种情况下,编译器或运行时可能会变得聪明,并且在while循环中"知道"eventFinished只能为false.特别是当您考虑提升变量作为类的成员生成的方式以及委托作为同一类的方法时,从而剥夺了eventFinished曾经是局部变量这一事实的优化.
此代码在最后一行抛出ArgumentOutOfRangeException
var initAddress = IPAddress.Parse("1.65.128.190");
var ipv6Address = initAddress.MapToIPv6();
Assert.IsTrue(ipv6Address.IsIPv4MappedToIPv6);
var ipv4Address = ipv6Address.MapToIPv4();
Run Code Online (Sandbox Code Playgroud)
谁能解释为什么MapToIPv6()和MapToIPv4()不兼容往返?
编辑:异常源自IP地址构造函数,由MapToIPv4()调用.
此外,当第一行是
var initAddress = IPAddress.Parse("1.65.128.90");
Run Code Online (Sandbox Code Playgroud)
没有例外被抛出
edit2:正如@Luaan转载的那样,我添加了标签[bug-reporting].还添加了[bcl].让我们看看是否有MS人员跟踪这些标签:)
edit3:在Connect https://connect.microsoft.com/VisualStudio/feedback/details/871964上报告
我目前正在为TFS2010构建创建构建模板.但是,我注意到我对模板的每次更改都在"垃圾邮件"源代码控制(对于这些更改的所有修复,还有更多).
我想知道最简单的方法是测试我正在创建的构建模板吗?有没有办法更改模板文件和自定义活动dll不涉及检查它们?
我目前在我的开发人员计算机上运行了一个构建控制器和代理程序,我正在使用它来测试模板(test =启动构建并希望比上次更少的错误).
简短:
我有一个方法decimal GetAmount(IThing thing).things.Sum(GetAmount)在CS0121错误中使用结果:在Sum(Func<T, int>)和之间调用不明确Sum(Func<T, int?>).为什么?
更长:
public interface IThing { }
public class Sample {
public decimal GetAmount(IThing thing) { return 0; }
public decimal Total(IThing[] things) { return things.Sum(GetAmount); }
}
Run Code Online (Sandbox Code Playgroud)
错误CS0121以下方法或属性之间的调用不明确:
'Enumerable.Sum<TSource>(IEnumerable<TSource>, Func<TSource, int>)'和'Enumerable.Sum<TSource>(IEnumerable<TSource>, Func<TSource, int?>)'
我会理解编译器之间是否混淆decimal,decimal?或者编译器是否无法选择任何多次Sum重载.但是为什么/如何将自己仅限于int和int?
顺便说一句,VS/R#'有帮助'突出显示传递GetAmount给.Sum()错误并建议传递一个int返回方法.编译器不会将此部分标记为第二个错误.更改GetAmount到int GetAmount(IThing thing)实际上是"解决"的编译错误.
PS.我不是在寻找编译器错误的解决方案.我知道我可以将GetAmount转换为Func<IThing, decimal> GetAmount { get; }或实现Total things.Sum(thing => GetAmount(thing)).正如@IvanStoev所建议的那样, …