2009-04-01 12 views
1

J'ai expérimenté avec les outils Remotesoft Linker et Mini Deployment pour créer un seul exécutable natif (dont le framework n'est pas installé) à partir de mon code managé. L'une des fonctionnalités configurables est si csc.exe est disponible pour l'exécutable final. La documentation pour cela dit que c'est généralement seulement nécessaire si l'on utilise la sérialisation XML (je suis). J'ai modifié mon processus de construction pour utiliser SGen pour créer l'assembly de sérialisation et ajouté le résultat aux références de chaque projet dans la solution qui utilise mes classes xml. Les classes de sérialisation sont intégrées dans l'exécutable .net lié (toutes les DLL .net combinées en un seul exe géré); donc je suppose que j'ai configuré correctement.Pourquoi mon application utilise-t-elle CSC pendant l'exécution?

Cependant, mon application tente toujours d'exécuter csc lors de son exécution. Est-ce que je fais quelque chose de mal avec l'assemblage de sérialisation, ce qui entraîne qu'il est recréé au moment de l'exécution; ou est-ce que mon application fait quelque chose d'autre qui nécessite le CSC, et comment puis-je déterminer quoi?

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

Generating an Xml Serialization assembly as part of my build

Edit: Fait quelques tests avec un app.config modifié pour conserver les fichiers sérialisation visibles si elles sont générées (testé en défaisant la génération du temps de construction); et il semble que je les ai déjà créés correctement. À moins qu'il y ait une partie différente de la structure qui invoque csc à l'exécution et dont les résultats sont affichés avec un drapeau différent, je pense que l'outil RemoteSoft est probablement à blâmer. Je ne peux pas être certain cependant parce que l'exécutable de sortie ne laisse aucun temps qu'il crée même si le fichier app.config qu'il a provoqué l'a indiqué.

Le app.info que j'ai utilisé était celui-ci. Ailleurs, j'ai vu des exemples utilisant une valeur de 4, mais je n'ai pas pu trouver de différence entre leur comportement.

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

Répondre

0

Il est possible que même si vous avez généré les ensembles de sérialisation XML, quelque chose sur la façon dont le Remotesoft Linker fonctionne signifie que le cadre intégré sérialisation ne peut pas les reconnaître. Je ne dis pas que c'est le cas, juste que c'est un premier port d'escale.

Je ne connais pas les détails de la manière dont le framework de sérialisation décide d'utiliser ou non le csc - mais ce serait probablement la première chose à étudier.