tags:

views:

248

answers:

1

I've been experimenting with the Remotesoft Linker and Mini Deployment tools to create a single native executable (that doesn't need the framework installed) from my managed code. One of the configurable features it has is if csc.exe is available for the final executable. The documentation for it says that it's typically only needed if using XML serialization (I am). I've modified my build process to use SGen to create the serialization assembly, and added the result to the references of each project in the solution that uses my xml classes. The serialization classes are making it into the linked .net executable (all .net dlls combined into a single managed exe); so I assume I have that configured properly.

However my app still attempts to execute csc when it runs. Am I doing something wrong with the serialization assembly, resulting in it being recreated at runtime; or is my app doing something else that requires csc, and how do I determine what?

http://www.remotesoft.com/linker/

http://stackoverflow.com/questions/134224/generating-an-xml-serialization-assembly-as-part-of-my-build

Edit: Done some testing with a modified app.config to keep the serialization files visible if generated (tested by undoing the build time generation); and it appears that I did have them properly created before. Unless there's a different part of the framework that invokes csc at runtime and which has its results unhidden using a different flag I think the RemoteSoft tool is probably to blame. I can't be certain though because the output executable doesn't leave any temps it creates visible even if the app.config file it injested told it to.

The app.info I used was this. Elsewhere I saw examples using a value of 4, but haven't been able to find any difference between their behavior.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <system.diagnostics>
      <switches>
         <add name="XmlSerialization.Compilation" value="1" />
      </switches>
   </system.diagnostics>
</configuration>
A: 

It's possible that although you've generated the XML serialization assemblies, something about the way the Remotesoft Linker works means that the built-in serialization framework may not recognise them. I'm not saying that's the case, just that it's a first port of call.

I don't know the details of how the serialization framework decides whether to use csc or not - but that would probably be the first thing to investigate.

Jon Skeet