在使用 Roslyn 分析器工作期间,我收到了来自 Roslyn 分析器的警报,该警报检查 Roslyn API 的正确使用情况。
RS1036:指定分析器禁止 API 强制设置。
包含分析器或源生成器的项目应指定属性“<EnforceExtendedAnalyzerRules>true</EnforceExtendedAnalyzerRules>”。
我尝试用谷歌搜索该属性的用途,但没有找到任何其他信息。这是我已经检查过的链接:
你知道这面旗帜有什么作用吗?
我正在考虑将代码契约添加到我们的项目中.我们使用C#和Visual Studio 2015.由于新的Roslyn编译器,我已经读过该版本的代码合同被破坏了.它仍然是真的吗?
另外,如果事实证明我将是团队中唯一使用代码合同的人,那么其他人是否有必要在他们的机器上安装代码合同?
如果我的团队决定不使用合同,我想确保我的提交不会破坏构建.
不久前,我阅读了以下有关 C# 8 中可空引用分析的文章:https : //www.meziantou.net/csharp-8-nullable-reference-types.htm
后置条件属性对我来说特别有趣。最近我遇到了应用MemberNotNull属性可能有用的情况。然而,出乎意料的我无法找到MemberNotNull并MemberNotNullWhen在.NET 3.1核心的公共属性。但是,我可以看到在 .net core 中声明了许多内部属性:https :
 //source.dot.net/#q=MemberNotNull
.net core 中是否有这些属性的替代品。我必须使用 .net 5 才能使用它们吗?
我正在为 C# 项目编写一个小型分析器,用于检查 XML 文档生成是否存在且设置正确。有两个选项可用于指定 XML 文档:
DocumentationFile选项GenerateDocumentationFile旗帜。如果该标志设置为 true,MSBuild 应在项目的输出目录中生成一个带有项目名称的 XML 文档文件。这两个选项都可以在项目文件中明确指定吗?这些选项的值会被合并还是其中一个选项将被忽略?
C# 7 ValueTuple 是否有类似于 Python 切片的功能?C# 中值元组的语法与 Python 类似,但我找不到一种优雅的方法来从元组获取子元组。
在Python 3中:
 tuple = (1,2,3)
 subtuple = t[:2]   #subtuple is (1, 2)
在 C#7 中:
 var tuple = (1,2,3)   //Very similar to Python!
 var subtuple = (tuple.Item1, tuple.Item2)  //Not very elegant, especially for bigger tuples
我正在开发 Visual Studio 2017 的扩展,其中包含自定义“工具窗口”。此“工具窗口”包含WPF control订阅view model的Workspace.WorkspaceChanged和EnvDTE.DTE.Events.WindowEvents.WindowActivated事件。
我知道,当用户关闭“工具窗口”时,它实际上并没有被破坏,而是“隐藏”了。然而,它仍然对我的事件做出反应。
所以,我想知道两个问题的答案:
编辑:创建工具窗口的代码:
protected virtual TWindow OpenToolWindow()
{
        ThreadHelper.ThrowIfNotOnUIThread();
        // Get the instance number 0 of this tool window. This window is single instance so this instance
        // is actually the only one.
        // The last flag is set to true so that if the tool window does not exists it will be created.
        ToolWindowPane window = Package.FindToolWindow(typeof(TWindow), id: 0, create: true);
        if …