いくつかの大きな (50MB 以上) XML ファイルをロードし、そこからいくつかの値を取得する powershell スクリプトを作成しました。スタンドアロン スクリプトとしては正常に動作します (ただし低速です)。
msbuild proj ファイルから .ps1 を呼び出すと、正常に起動しますが、System.OutOfMemoryException 例外で大きな XML ファイルをロードすると終了します。
"C:\Program Files (x86)\MSBuild\12.0\Bin\msbuild.exe" Test.proj
パワーシェル 4.0
私の回避策は、XMLDocument の代わりに XMLReader を使用することです。これにより、順次読み取りが行われ、動作が速くなり、MSBUILD で停止しなくなります。
回避策には満足していますが、msbuild タスクから ps1 を実行するときにメモリ制限があるのはなぜでしょうか?
原因は MSBUILD の 32 ビット バージョンですか? それとも設計によるものですか?