.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