コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】.csproj の NoWarn に 0169 と 0649 を追加して警告を抑制するエディタ拡張

概要

f:id:baba_s:20211113095143p:plain

Unity で「Suppress Common Warnings」をオンにすれば
Unity 上では 0169 と 0649 の警告は出なくなるが

f:id:baba_s:20211113095149p:plain

Rider 上でビルドした場合は警告が出るので以下のエディタ拡張を作って警告を抑制

using System.IO;
using System.Text;
using System.Xml.Linq;
using UnityEditor;
using UnityEngine.Assertions;

internal sealed class CSProjectNoWarnPostprocessor : AssetPostprocessor
{
    private static string OnGeneratedCSProject( string path, string content )
    {
        var document = XDocument.Parse( content );
        var root     = document.Root;

        Assert.IsNotNull( root, nameof( root ) );

        var defaultNamespace = root.GetDefaultNamespace();
        var descendants      = root.Descendants( defaultNamespace + "NoWarn" );

        foreach ( var xElement in descendants )
        {
            xElement.Value = "0169;0649;";
        }

        using var writer = new Utf8StringWriter();
        document.Save( writer );
        return writer.ToString();
    }

    private sealed class Utf8StringWriter : StringWriter
    {
        public override Encoding Encoding => Encoding.UTF8;
    }
}

これで Rider 上でビルドしても 0169 と 0649 の警告は出なくなる