sgen.exe, XmlSerializers.dll not being used

坚强是说给别人听的谎言 提交于 2019-12-25 03:59:21

问题


I need to produce XML serializers for certain of my classes in advance to avoid them being built when the application runs.

I managed to (eventually) get sgen running as a post build operation. It appears to be working as it produces the expected DLL.

However its not being used. I have configured the diagnostics to leave the files on disk and I can see them still being produced.

This is with an existing class (ClassA) of moderate complexity. So I created a simple class (ClassB) and tested on that which worked fine. My so called simple class had a reference to another class, and a list of another class within it.

Strangely if I try and compile ClassA & ClassB neither work - only when its ClassB alone does ClassB work, and ClassA never works.

I assume there is something about ClassA which can't be serialized in advance, but if so how do I find out what the issue is? Its not throwing any errors, and it is producing a DLL.

Here is my build configuration.

  <ItemGroup>
    <SgenTypes Include="GK.Data.XmlSerialTest" /> <!-- ClassB - works but only by itself -->
    <!--<SgenTypes Include="GK.Data.CalendarInfo" />--><!-- ClassA (desired class) Uncomment to test -->
  </ItemGroup>
  <Target Name="AfterBuild" DependsOnTargets="AssignTargetPaths;Compile;ResolveKeySource" Inputs="$(MSBuildAllProjects);@(IntermediateAssembly)" Outputs="$(OutputPath)$(_SGenDllName)">
    <!-- Delete the file because I can't figure out how to force the SGen task. -->
    <Delete Files="$(TargetDir)$(TargetName).XmlSerializers.dll" ContinueOnError="true" />
    <SGen BuildAssemblyName="$(TargetFileName)" Types="@(SgenTypes)" BuildAssemblyPath="$(OutputPath)" References="@(ReferencePath)" ShouldGenerateSerializer="true" UseProxyTypes="false" KeyContainer="$(KeyContainerName)" KeyFile="$(KeyOriginatorFile)" DelaySign="$(DelaySign)" ToolPath="$(TargetFrameworkSDKToolsDirectory)" Platform="$(Platform)">
      <Output TaskParameter="SerializationAssembly" ItemName="SerializationAssembly" />
    </SGen>
  </Target>

来源:https://stackoverflow.com/questions/26094159/sgen-exe-xmlserializers-dll-not-being-used

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!