Maison >développement back-end >C++ >Comment puis-je forcer Visual Studio à générer automatiquement des assemblys de sérialisation XML dans .NET ?
.NET utilise des assemblys de sérialisation XML pour gérer la sérialisation et la désérialisation des objets. Bien que ces assemblys soient généralement générés automatiquement, vous pouvez rencontrer des erreurs FileNotFoundException
lors de la lecture XML avec XmlSerializer
s'ils sont manquants. La création manuelle de l'assembly à l'aide de sgen.exe
fonctionne, mais il est préférable de l'automatiser dans Visual Studio.
Le défi :
Le paramètre « Générer un assemblage de sérialisation » de Visual Studio n'est pas toujours fiable. Il utilise le commutateur /proxytypes
avec sgen.exe
, empêchant la génération d'assembly si aucun type de proxy n'existe.
La solution :
Pour automatiser de manière fiable la génération d'assemblys de sérialisation, contournez le commutateur /proxytypes
. Ceci est réalisé en ajoutant la propriété SGenUseProxyTypes
MSBuild à votre fichier de projet et en la définissant sur false
. Cela force la génération d'assemblys quelle que soit la présence du type de proxy.
Étapes de mise en œuvre :
Modifiez le fichier .csproj
de votre projet (ou équivalent) et ajoutez ce qui suit dans les sections <PropertyGroup>
pour vos configurations Debug et Release :
<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>
N'oubliez pas d'ajuster la condition de la plateforme x86
si nécessaire pour qu'elle corresponde à la plateforme cible de votre projet (par exemple, AnyCPU
). Après cette modification, Visual Studio générera automatiquement l'assembly de sérialisation XML, évitant ainsi les FileNotFoundException
erreurs lors de la sérialisation et de la désérialisation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!