System.InvalidProgramException

プログラムに無効な MSIL (Microsoft intermediate language) またはメタデータが含まれている場合にスローされる例外。通常、これはプログラムを生成したコンパイラのバグ、とのこと。
非常に興味をそそられたので調査してみたが、断念。KB312544の情報を元に、非常に長い命令文を生成してみた。

[実験ソース(C#)]

using System;

using System.IO;

namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            const int COUNT = 1194// 1193 まではOK

            const string src = @"
using System;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 1;
            int b = 0;
            int c = 
"
;



            using (StreamWriter sw = new StreamWriter("Test.cs"))

            {

                sw.Write(src);

                sw.Write("                ");

                for (int i = 0; i < COUNT; i++)

                {

                    sw.Write("(a == 1 ? ");

                }

                sw.WriteLine();

                sw.Write("                ");

                sw.WriteLine("a ");

                sw.Write("                ");

                for (int i = 0; i < COUNT; i++)

                {

                    sw.Write(": b)");

                }

                sw.WriteLine(";");

                sw.WriteLine("        }");

                sw.WriteLine("    }");

                sw.WriteLine("}");

            }

        }

    }

}

[結果]


コンパイルするには、式が長すぎるか、または複雑すぎます。
(ビルド失敗)

[対処など]
長い三項演算子を作成してみたが、例外を発生させることはできなかった。コンパイルバグだと言っているくらいなので、改修されていて当たり前か・・・