C# 在VS代码中禁用特定编译器警告

C# 在VS代码中禁用特定编译器警告,c#,compiler-warnings,visual-studio-code,suppress-warnings,C#,Compiler Warnings,Visual Studio Code,Suppress Warnings,我想知道如何在整个项目中禁止VS代码中的特定编译器警告。 我看过这个queston:但它是针对VisualStudio的,而不是VisualStudio代码 以下是在上面链接的问题中推荐的答案: 1. 解决方案资源管理器查看属性生成抑制警告 和 2. #杂注警告禁用警告列表 对于#1:我在VS代码中的任何地方都找不到解决方案资源管理器 对于#2,仅当我将其包含在每个脚本的顶部时,这才有效。我需要一种方法来完成整个项目 更新: 我尝试在.csproj文件中使用016998019,但没有成功 查看最

我想知道如何在整个项目中禁止VS代码中的特定编译器警告。
我看过这个queston:但它是针对VisualStudio的,而不是VisualStudio代码

以下是在上面链接的问题中推荐的答案:
1. <代码>解决方案资源管理器
查看
属性
生成
抑制警告


2. <代码>#杂注警告禁用警告列表

对于#1:我在VS代码中的任何地方都找不到解决方案资源管理器

对于#2,仅当我将其包含在每个脚本的顶部时,这才有效。我需要一种方法来完成整个项目

更新:

我尝试在.csproj文件中使用
016998019,但没有成功

查看最后的更改后,我注意到它已恢复为
0169
。然后我意识到我需要的是0169;8019
。将
切换为
解决了问题

事实证明,上述解决方案根本不起作用。当我重新启动VS代码时,所有的警告都回来了。也许我需要的错误代码不是8019,即使它在
#pragma
语句中作为错误代码工作。
中使用的代码是否与
#pragma
语句末尾使用的代码不同


对于那些说太多转向VS社区的人来说,这不是重点。我正在使用VS代码作为文本编辑器Unity编辑器。我正在查找需要更改的文件以及需要进行哪些更改,以便将类似于
#pragma warning disable 8019
的语句应用于整个项目。

我能够实现这一点。我的解决方案如下所示:


netcoreapp2.1
2.1.1
0169;8019
是PascalCase而不是camelCase,元素嵌套在

中,我终于能够通过在Unity项目中创建以下编辑器脚本来解决此问题:

using System.IO;
using System.Text.RegularExpressions;
using UnityEngine;
using UnityEditor;

[InitializeOnLoad]
class FixCSProjs : AssetPostprocessor
{
    private static void OnGeneratedCSProjectFiles() {
        Debug.Log("Fixing csproj files...");
        var dir = Directory.GetCurrentDirectory();
        var files = Directory.GetFiles(dir, "*.csproj");

        foreach (var file in files) {
            FixProject(file);
        }
    }

    static bool FixProject(string file) {
        var text = File.ReadAllText(file);
        var find = "<NoWarn>([0-9;]+)<\\/NoWarn>";
        var replace = "<NoWarn>$1;3003;3009</NoWarn>";

        if (Regex.IsMatch(text, find)) {
            text = Regex.Replace(text, find, replace);
            File.WriteAllText(file, text);
            return true;

        } else {
            return false;
        }
    }
}
使用System.IO;
使用System.Text.RegularExpressions;
使用UnityEngine;
使用UnityEditor;
[初始化加载]
类FixCSProjs:AssetPostprocessor
{
生成的CSprojectFiles()的私有静态无效{
Log(“修复csproj文件…”);
var dir=Directory.GetCurrentDirectory();
var files=Directory.GetFiles(dir,“*.csproj”);
foreach(文件中的var文件){
固定项目(文件);
}
}
静态布尔修复项目(字符串文件){
var text=File.ReadAllText(文件);
var find=“[0-9;]+)”;
var replace=“$1;3003;3009”;
if(Regex.IsMatch(text,find)){
text=Regex.Replace(text,find,Replace);
WriteAllText(文件,文本);
返回true;
}否则{
返回false;
}
}
}
这将在Unity每次自动生成csproj文件时,向每个csproj文件的
NoWarn
属性添加额外的警告代码。这有一个重要的优点,即它不需要手动编辑Unity自动生成的文件,这意味着它更健壮,适合包含在git之类的代码库中

在我的例子中,我禁用了警告3003和3009(CLS合规性警告),但只是替换
3003;3009
在我的代码中,使用您想要的任何分号分隔的警告代码,它应该可以做到这一点


我还想说,这是一个令人发指的解决方案,我真的希望有一个更好、更干净的方法来实现这一点。

你是说上面的1不起作用吗?如果是,您看到了什么?VS代码没有解决方案资源管理器。如果有的话,我找不到。我将澄清这一点。从链接中的答案:在解决方案资源管理器中,选择要在其中抑制警告的项目。编辑您的项目属性(在您的解决方案下)。在VS代码中,我在哪里可以找到解决方案资源管理器?现在您已经说明您使用的是Visual Studio代码,而不是Visual Studio,很遗憾,我无法为您提供帮助,因为我对此不熟悉。也许一个好的选择是Visual Studio社区版,它是免费的,功能更强大。