背景我正在从事一个小型编码项目,该项目将出售给其他公司。我需要为它创建一些文档,所以我决定使用SandcaSTLe。在花了很长时间下载和安装之后,我终于让它工作了,并注意到任何没有注释的公共(public)方法或类都有红色文本,说明缺少注释。然后我安装了Ghostdoc来帮助加快我的评论速度。这打开了缺少xml注释的编译器警告,这很棒,因为我现在有了一个包含我需要注释的所有内容的列表。问题我的一个代码文件是一个自动生成的文件,其中包含大约3000个编译器警告。我需要能够跳过该文件以创建任何“缺少Xml注释”编译器警告。我从this知道这些事情帖子:我知道我可以关闭项目的编译器警告,但项
我有一个包含30个项目的大型解决方案,其中2个是Web项目(MVC和WebAPI)以及一堆后台类库项目。我设置了visualstudio以在IIS中托管Web项目。如果我进行全新构建,然后对整个解决方案进行完整构建,那么通过浏览器访问这两个项目都可以正常工作。(它们位于差异文件夹中并托管在iis中的差异“域”中)如果我不做任何代码更改,只需重新构建2个Web项目之一,另一个就会停止工作。需要说明的是,重建WebAPI工程导致MVC工程出错。反之亦然。我得到的错误是说找不到System.Web.Http.Formatter。详细信息说定位的程序集版本与引用版本不同。检查bin文件夹表明情
这是VisualStudio2008。显然与扩展的静态类有关。publicclassDummy{publicreadonlyintx;publicDummy(intx){this.x=x;}publicoverridestringToString(){returnx.ToString();}}[Obsolete("DoNotUse",true)]publicstaticclassExtensions{publicstaticintSquared(thisDummyDummy){returnDummy.x*Dummy.x;}}classProgram{staticvoidMain(str
我花了大量时间在C#4.0中进行多线程编码。然而,有一个问题对我来说仍然没有答案。我知道volatile关键字会阻止编译器将变量存储在寄存器中,从而避免无意中读取过时的值。写入在.Net中总是易变的,因此任何说明它还避免过时写入的文档都是多余的。我也知道编译器优化有点“不可预测”。以下代码将说明由于编译器优化(在VS之外运行发布编译时)导致的停顿:classTest{publicstructData{publicint_loop;}publicstaticDatadata;publicstaticvoidMain(){data._loop=1;Testtest1=newTest();n
我是在关于另一个StackOverflow问题的讨论(incomments)之后开始这个问题的,我很想知道答案。考虑以下表达式:varobjects=RequestObjects.Where(r=>r.RequestDate>ListOfDates.Max());移动ListOfDates.Max()的评价有没有(性能)优势?在这种情况下,在Where子句之外,还是会1.编译器或2.JIT优化它?我相信C#只会在编译时进行常量折叠,并且可以说ListOfDates.Max()在编译时无法知道,除非ListOfDates本身在某种程度上是常量。也许还有另一个编译器(或JIT)优化可以确保
我在添加dll引用时遇到了一个奇怪的问题。我有一个WPF应用程序并正在尝试使用WPFMDI库:http://wpfmdi.codeplex.com/如说明中所述(非常模糊),我在VS2012中右键单击引用,单击Addreference..,点击Browse..并添加了我下载的dll。接下来,我在窗口的XAML中添加了以下行:xmlns:mdi="clr-namespace:WPF.MDI;assembly=WPF.MDI"如说明中所述。但是,在尝试添加时在XAML中,显示以下错误消息:Thetype'mdi:MdiContainer'wasnotfound.Verifythatyoua
我想知道是否有人可以向我解释编译器到底做了什么让我观察到一个简单方法的性能差异如此之大。publicstaticuintCalculateCheckSum(stringstr){char[]charArray=str.ToCharArray();uintcheckSum=0;foreach(charcincharArray){checkSum+=c;}returncheckSum%256;}我正在与一位同事合作,为消息处理应用程序做一些基准测试/优化。在VisualStudio2012中使用相同的输入字符串对此函数进行1000万次迭代大约需要25秒,但是当使用“优化代码”选项构建项目时
是否有一些聪明的方法来获取构建/编译dll的日期和时间?我正在使用程序集版本编号和反射来在部署应用程序时检索和显示此信息。但在某些情况下,知道dll实际编译的时间比自动递增的版本号更方便。由于应用程序的部署方式,我认为dll文件本身的修改日期不可靠。Dimassemblies=AppDomain.CurrentDomain.GetAssembliesDimassemblyNameAsStringDimassemblyVersionAsStringForEachassemblyInassembliesassemblyName=assembly.GetName.Name.ToStringa
考虑这个类://////Dummyimplementationofaparserforthepurposeofthetest///classParser{publicListReadList(FuncreadFunctor){returnEnumerable.Range(0,10).Select(i=>readFunctor()).ToList();}publicintReadInt32(){return12;}publicstringReadString(){return"string";}}我尝试使用已编译的lambda表达式树生成以下调用:Parserparser=newPars
我使用的是针对.Net4.6.2的标准VS2015编译器。编译器在finallyblock失败后发出无限循环。一些例子:调试:IL_0000:nop.try{IL_0001:nopIL_0002:nopIL_0003:leave.sIL_000c}//end.tryfinally{IL_0005:nopIL_0006:br.sIL_000a//loopstart(head:IL_000a)IL_0008:nopIL_0009:nopIL_000a:br.sIL_0008//endloop}//endhandler//loopstart(head:IL_000c)IL_000c:br.s