自動アセンブリ生成を有効にして FileNotFoundException
の XmlSerializer
を解決します
FileNotFoundException
の使用時に XmlSerializer
が発生するのは、シリアル化アセンブリが欠落していることが原因であることがよくあります。 フレームワークはこれを自動的に生成できますが、特定の構成が必要です。
シリアル化アセンブリの自動生成を有効にする
Visual Studio の「シリアル化アセンブリの生成」プロジェクト プロパティ (「オン」に設定) は、重要な最初のステップです。 ただし、ビルド中に /proxytypes
によって使用される sgen.exe
フラグのため、これだけでは不十分な場合があります。
プロキシ タイプの生成を無効にする
Microsoft の MSBuild プロパティ SGenUseProxyTypes
が解決策を提供します。 これを false
に設定すると、プロキシ型の生成が防止され、非 Web サービス型でもシリアル化アセンブリの作成が可能になります。
プロジェクト ファイル (.csproj) を手動で編集する
Visual Studio には SGenUseProxyTypes
の直接インターフェイスがないため、.csproj
ファイルを手動で変更する必要があります。 ビルド構成に関連する <PropertyGroup>
内に以下を追加します:
<code class="language-xml"><sgenuseproxytypes>false</sgenuseproxytypes></code>
変更されたプロジェクト ファイルの例 <PropertyGroup>
:
<code class="language-xml"><PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> <GenerateSerializationAssemblies>On</GenerateSerializationAssemblies> <SGenUseProxyTypes>false</SGenUseProxyTypes> </PropertyGroup></code>
このように /proxytypes
スイッチを無効にすると、プロジェクトはビルド中に必要な XmlSerializer
アセンブリを正しく生成し、FileNotFoundException
を排除してアプリケーションをスムーズに実行できるようになります。
以上がシリアル化アセンブリの自動生成を有効にして XmlSerializer の FileNotFoundException を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。