プロジェクトのMSBuildファイルで、xmlシリアル化中に使用されるクラスを含むアセンブリをsgenします。クラスはxsd.exeを介して生成されます。
次のSGenタスク構成を使用します。
<SGen ToolPath="$(SdkPath)"
ShouldGenerateSerializer="true"
UseProxyTypes="false"
BuildAssemblyName="AssemblyName.dll"
BuildAssemblyPath="Outputs"
ContinueOnError="false" />
ビルドサーバーでmsbuildスクリプトを実行すると、断続的に次のエラーがスローされます。元々、このエラーは50(CI)ビルドごとに1回発生した可能性がありますが、最近は頻度が増加しており、現在は10ビルドごとに5〜6回発生する可能性があります。
Sgennedされているアセンブリのサイズは約410k(生成されたコードの約35,000行)であり、成功すると、シリアル化アセンブリのサイズは約1.7Mになります。
失敗した場合の出力は次のとおりです。
Unhandled Exception: System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
E:\Path_ToBuild_Workspace\SolutionBuild.MSBuild(74,5): error MSB6006: "sgen.exe" exited with code -1073741819.
Hudsonを使用してビルドを管理しているため、msbuildプロセスとsgenプロセスはHudson.exeによって生成されます。
SGenからのこのタイプのエラーに関して、インターウェブにはあまりありません。確かに具体的なことは何もありません。