sh1’s diary

プログラミング、読んだ本、資格試験、ゲームとか私を記録するところ

C# OleDb CA1416 の警告をクリアする (visual studio)

.NET で OleDb を利用すると以下の図のように .NET Frameworks 時代は表示されなかった警告が出るようになっていた。

警告の内容のとおり、OleDb 関係は windows でしか使えないことが問題ですね。言い換えると .NET が複数のプラットフォームで利用できるようになったため、.NET Framework 時代から新たに発生するようになった問題です。

問題の発生するコード:

public object GetSample(string source)
{
    var connection = new OleDbConnection();
    var command = new OleDbCommand();

    connection.ConnectionString = $@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={source}";

    connection.Open();

    command.CommandText = "SELECT * FROM ---";
    command.Connection = connection;

    var reader = command.ExecuteReader();

    while (reader.Read())
    {
        // ...
    }

    return new object();
}

対応

OleDb を使って .mdb 形式のファイルを読み込む場合、windows だけでよいと思うのでプラットフォームを属性で指定することで警告をクリアすることができます。

[SupportedOSPlatform("windows")]
public object GetSample(string source)
{
    var connection = new OleDbConnection();
    var command = new OleDbCommand();

    connection.ConnectionString = $@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={source}";

    connection.Open();

    command.CommandText = "SELECT * FROM ---";
    command.Connection = connection;

    var reader = command.ExecuteReader();

    while (reader.Read())
    {
        // ...
    }

    return new object();
}

pragma

あまり使用するものでもないですが pragma でも、警告のクリア対応可能。

#pragma warning disable CA1416
    // ...
#pragma warning restore CA1416

参考