草庐IT

c# - 实验性特征 "indexed members"是什么?

论新RoslynPreviewsite它提到能够尝试潜在的语言特性,并列出了三个这样的特性。前两个我以前听说过(例如here),但我无法从代码示例中弄清楚“索引成员”是什么。谁能根据其他来源或代码示例解释这些是什么?(毫无值(value)$x不是C#5中的有效标识符。)更新-根据RoslynFeatureStatus页面,此功能已被撤销。 最佳答案 .$foobar只是["foobar"]的缩写形式 关于c#-实验性特征"indexedmembers"是什么?,我们在StackOverf

c# - Roslyn 与 MsBuild 有何关系?

我想知道:Roslyn与MsBuild到底有什么关系?我的理解是Roslyn是一个编译引擎MsBuild主要是一组关于如何设置项目的规范向上-即基本上是.csproj、.sln文件和等等。然后,MsBuild还附带一个msbuild.exe-如果我错了请纠正我,它能够实际编译项目。但是,假设msbuild.exe可以编译项目,但Roslyn也可以,这将如何与Roslyn联系起来?如果是MSBuild15,msbuild.exe是否使用Roslyn进行编译?他们是完全分开的吗?我是不是误会了什么?而且更具体地说:假设我想以编程方式创建简单的.csproj文件,并使用Roslyn的MSBu

c# - 禁用 "Name can be simplified"IDE0003 修复提示

即使在选项中禁用了检查,VisualStudio2017也会提示不必要的this限定符。它是这样的:(第一行是罪魁祸首,第二行是我希望this总是的样子。)将鼠标悬停在变灰的this上并单击灯泡会显示此建议的修复方法:我找不到完全禁用它的方法。有时我想要“不必要的”this限定符,有时我不想,所以我根本不希望VS对此发表评论。“无”是最不严重的选项,但它仍然显示这种恼人的不同颜色。是否有可能完全禁用此检查? 最佳答案 如果您知道其诊断ID(在本例中为“IDE0003”),则可以使用规则集文件来禁用任何分析关于References您项

c# - 从 TypeInfo 对象获取类型的完全限定名称

是否有可能以某种方式获取TypeInfo对象中包含的类型的完全限定名称?在调试器中,许多这些值很好地显示为System.Int32,但是当它被打印出来时,没有一个包含这个完全限定的名称。我需要将其作为参数提供给Type.GetType()。vartypeInfo=semanticModel.GetTypeInfo(argument);varw=typeInfo.ToString();//Microsoft.CodeAnalysis.TypeInfovary=typeInfo.Type.ToString();//intvarz=typeInfo.Type.ToDisplayString(

c# - Roslyn 模型是否以 C#/VB.NET 为中心以至于现在和将来都无法进行 XAML 分析?

我刚读过theblogentrybyJetBrains(Resharper)thatsuggeststhatRoslyncouldneverdoXAMLanalysis:AnothercoredifferenceisthatRoslyncoversexactlytwolanguages,C#andVB.NET,whereasReSharperarchitectureismultilingual(转自resharper博客)对于外行,Resharper可以对XAML代码进行非常好的静态分析,允许代码完成和与C#一起重构。我很好奇。Roslyn架构的通用性是否足以扩展到除C#和VB.Net

c# - 支持编译依赖的多个版本 (vNext)

我为目前支持MVC2-MVC5的开源库做出贡献,我也希望支持MVC6(及更高版本)。为了支持每个版本的MVC,我们利用了ConditionMSBuild的功能,在进行构建时包含正确版本的MVC及其依赖项(取决于DefineConstants的值)。通过使用相同的项目文件和源代码为每个MVC版本创建一个单独的DLL,这使得为所有受支持的MVC版本使用单个项目文件成为可能。True..\packages\Microsoft.AspNet.Mvc.3.0.20105.1\lib\net40\System.Web.Mvc.dllTrue..\packages\Microsoft.AspNet.

c# - 在给定 SyntaxTree 中的行号的情况下获取 SyntaxNode

我想在给定位置(lineNumber)的情况下获取一行的SyntaxNode。下面的代码应该是不言自明的,但如有任何问题,请告诉我。staticvoidMain(){stringcodeSnippet=@"usingSystem;classProgram{staticvoidMain(string[]args){Console.WriteLine(""Hello,World!"");}}";SyntaxTreetree=SyntaxTree.ParseCompilationUnit(codeSnippet);string[]lines=codeSnippet.Split('\n');S

c# - 构建一个 web 项目破坏了解决方案中第二个的编译版本

我有一个包含30个项目的大型解决方案,其中2个是Web项目(MVC和WebAPI)以及一堆后台类库项目。我设置了visualstudio以在IIS中托管Web项目。如果我进行全新构建,然后对整个解决方案进行完整构建,那么通过浏览器访问这两个项目都可以正常工作。(它们位于差异文件夹中并托管在iis中的差异“域”中)如果我不做任何代码更改,只需重新构建2个Web项目之一,另一个就会停止工作。需要说明的是,重建WebAPI工程导致MVC工程出错。反之亦然。我得到的错误是说找不到System.Web.Http.Formatter。详细信息说定位的程序集版本与引用版本不同。检查bin文件夹表明情

c# - 如何使用 Roslyn 检测脚本(而不是文档)中未使用的导入?

我正在编写一个系统来处理作为NodaTime单元测试编写的片段,因此我可以将这些片段包含在文档中。我有一个firstpass工作,但我想整理代码。处理片段时需要做的一件事是确定该片段实际需要哪些using指令。(单个源文件中可以有多个片段,但每个片段将单独出现在文档中-我不希望从一个片段中导入影响另一个片段。)工作代码处理Document实例-我为每个片段创建一个单独的Document包含一个方法和所有潜在的导入,添加它到项目中,然后删除不必要的using指令,如下所示:privateasyncstaticTaskRemoveUnusedImportsAsync(Documentdoc

c# - Roslyn 中的简单代码完成示例

我想开始使用Roslyn中的代码完成,但找不到任何简单的示例来说明如何进行代码完成。什么是完成此代码的好示例,以便我可以在caretIndex获得所有可能的完成项(AKAIntellisense或CTRL+Space完成)?staticvoidMain(string[]args){varcode=@"usingSystem;publicclassTest{publicvoidTestMethod(){varnow=DateTime.Now;now.}}";Console.WriteLine(code);varst=SyntaxTree.ParseText(code);varcaretI