.NET verwendet XML-Serialisierungsassemblys, um die Objektserialisierung und -deserialisierung zu verwalten. Während diese Assemblys normalerweise automatisch generiert werden, können beim XML-Lesen mit FileNotFoundException
XmlSerializer
-Fehler auftreten, wenn sie fehlen. Das manuelle Erstellen der Assembly mit sgen.exe
funktioniert, es ist jedoch vorzuziehen, dies in Visual Studio zu automatisieren.
Die Herausforderung:
Die Einstellung „Serialisierungsassembly generieren“ von Visual Studio ist nicht immer zuverlässig. Es verwendet den Schalter /proxytypes
mit sgen.exe
und verhindert so die Assemblygenerierung, wenn keine Proxytypen vorhanden sind.
Die Lösung:
Um die Generierung von Serialisierungsbaugruppen zuverlässig zu automatisieren, umgehen Sie den Schalter /proxytypes
. Dies wird erreicht, indem Sie die MSBuild-Eigenschaft SGenUseProxyTypes
zu Ihrer Projektdatei hinzufügen und auf false
festlegen. Dadurch wird die Assemblygenerierung unabhängig vom Vorhandensein des Proxytyps erzwungen.
Implementierungsschritte:
Bearbeiten Sie die .csproj
-Datei Ihres Projekts (oder eine entsprechende Datei) und fügen Sie in den <PropertyGroup>
-Abschnitten für Ihre Debug- und Release-Konfigurationen Folgendes hinzu:
<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>
Denken Sie daran, die x86
-Plattformbedingung bei Bedarf an die Zielplattform Ihres Projekts anzupassen (z. B. AnyCPU
). Nach dieser Änderung generiert Visual Studio automatisch die XML-Serialisierungsassembly und verhindert so FileNotFoundException
Fehler bei der Serialisierung und Deserialisierung.
Das obige ist der detaillierte Inhalt vonWie kann ich Visual Studio dazu zwingen, automatisch XML-Serialisierungsassemblys in .NET zu generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!