自動產生 XML 序列化程序集
問題:
使用 XmlSerializer 時,由於缺少序列化程序集而發生異常。為什麼 Visual Studio 設定「生成序列化組件」無法解決此問題,以及如何解決?
答案:
僅靠「產生序列化組件」設定是不夠的,因為 SGen 任務會將「/proxytypes」開關新增至 sgen.exe 命令列,從而阻止在沒有代理程式類型的情況下產生序列化組件。
為了解決這個問題,Microsoft 引入了「SGenUseProxyTypes」 MSBuild 屬性,讓您可以停用「/proxytypes」開關。以下是使用方法:
步驟 1:停用代理類型產生
在匯入 Microsoft.Common.Targets 或 C#/VB.targets 之前,將以下屬性新增至您的專案檔案:
<code class="language-xml"><sgenuseproxytypes>false</sgenuseproxytypes></code>
步驟 2:啟用序列化程序集產生
確保在專案屬性中啟用了「產生序列化程序集」設定。
修改後的專案檔案配置:
<code class="language-xml"><PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> <GenerateSerializationAssemblies>On</GenerateSerializationAssemblies> <SGenUseProxyTypes>false</SGenUseProxyTypes> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> <GenerateSerializationAssemblies>On</GenerateSerializationAssemblies> <SGenUseProxyTypes>false</SGenUseProxyTypes> </PropertyGroup></code>
進行這些變更後,Visual Studio 將自動產生 Xml 序列化組件,無需手動幹預。
以上是為什麼「生成序列化程序集」不能始終與 XmlSerializer 配合使用,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!