『究極のC#プログラミング』 Appendix1 VS2005/2008のコンパイラの機能

コマンドライン引数またはプロジェクトのプロパティとして設定できる


まずVS2005(C#2.0)コンパイラでの変更点

/errorreport

コンパイラ自身のエラーを報告するか。めったにエラーに遭遇しない

/incrementalの削除

変更箇所だけコンパイルするオプションが削除された

/keycontainer, /keyfile

暗号化キーコンテナと暗号化キーファイルの名前を指定
指定されたコンテナまたはファイルの公開キーは、アセンブリマニフェストに追加される
そして、最終的なアセンブリが秘密キーで署名されることによって、共有可能なコンポーネントが生成される

/langversion

C#のバージョンではなくて、ISO-1, ISO-2, defaultを指定
規格に合ったコードを利用するための機能

/linkresourceにアクセシビリティを指定できる

リソースのアクセシビリティ(public, private)の指定

/linkresource:ファイル名[,識別子[,アクセス修飾子]]

/moduleassemblyname

モジュール作成時に、外部アセンブリからフレンドアセンブリとして参照される名前を指定


モジュールとは、.netmoduleという拡張子で、アセンブリの構成要素として取り込めるもの
InternalsVisibleTo属性ではアセンブリ名を指定できるが、モジュール単位でコンパイルする場合にはコンパイル時のアセンブリ名確定が為されない。
そこでこのオプションを使用する

/pdb

デバッグ情報ファイル(.pdb)は、デフォルトでは出力ファイル(.exe, .dll)と同一のディレクトリに作成されるが、
このオプションではこのディレクトリを指定できる

/platform

x86, Itanium, x64, anycpu(既定値)


32bit/64bitの相違が特に問題となる



VS2008(C#3.0)コンパイラの新機能

/win32Manifest, /noWin32Manifest

実行可能ファイルに埋め込むユーザ定義のWin32アプリケーションマニフェストファイルを指定
これはVistaで管理者権限、UACを扱うのに必要
/noWin32Manifestでは、マニフェストの埋め込みをしないことを指定