Version: 2020.3
言語: 日本語
安定したスクリプティングランタイム - 既知の制限
C# コンパイラー

追加のクラスライブラリアセンブリの参照

Unity プロジェクトが、デフォルトでコンパイルされない .NET クラスライブラリ API の一部にアクセスする必要がある場合、プロジェクトは Unity の C# コンパイラーに通知できます。この動作は、プロジェクトが使用する .NET プロファイルによって異なります。

.NET Standard 2.0 プロファイル

プロジェクトで .NET Standard 2.0 の Api Compatibility Level (API の互換性レベル) を使用する場合は、.NET クラスライブラリ API の一部を使用するために追加の手順を行う必要はありません。API の一部が見つからない場合は、.NET Standard 2.0 に含まれていない場合があります。代わりに、プロジェクトで .NET 4.x の Api Compatibility Level を使用しなければならない場合があります。

.NET 4.x プロファイル

デフォルトでは、.NET 4.x の Api Compatibility Level を使用する場合、Unity は以下のアセンブリを参照します。

  • mscorlib.dll
  • System.dll
  • System.Core.dll
  • System.Runtime.Serialization.dll
  • System.Xml.dll
  • System.Xml.Linq.dll

他のクラスライブラリアセンブリを参照するには、csc.rsp ファイルを使用してください。このファイルを Unity プロジェクトの Assets ディレクトリに追加し、それを使って追加のコマンドライン引数を C# コンパイラーに渡すことができます。例えば、System.Net.Http.dll アセンブリで定義された HttpClient クラスをプロジェクトで使用すると、C# コンパイラーは以下の初期エラーメッセージを出力する場合があります。

The type `HttpClient` is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

このエラーを解決するには、以下の csc.rsp ファイルをプロジェクトに加えます。

-r:System.Net.Http.dll

前述の例のように、クラスライブラリのアセンブリを参照する必要があります。アセンブリファイルは、プロジェクトの Assets フォルダー、またはそのサブフォルダーに配置する必要があります。

プロファイルの切り替え

クラスライブラリアセンブリを参照するために csc.rsp ファイルを使用する場合は注意が必要です。API Compatibility Level を .NET 4.x から .NET Standard 2.0 に変更し、上記の例のような csc.rsp がプロジェクトに存在する場合、C# コンパイルは失敗します。 System.Net.Http.dll アセンブリが .NET Standard 2.0 プロファイルに存在しないため、C# コンパイラーは .NET Standard 2.0 プロファイルを見つけることができません。

csc.rsp ファイルには、現在の .NET プロファイル専用の部分を作ることができます。プロファイルに変更を加える場合は、csc.rsp ファイルを変更する必要があります。

安定したスクリプティングランタイム - 既知の制限
C# コンパイラー