2009-04-01 9 views
1

Ich habe mit den Tools Remotesoft Linker und Mini Deployment experimentiert, um eine einzelne native ausführbare Datei (die das Framework nicht installiert hat) aus meinem verwalteten Code zu erstellen. Eine der konfigurierbaren Funktionen ist, wenn csc.exe für die endgültige ausführbare Datei verfügbar ist. Die Dokumentation dafür besagt, dass es normalerweise nur benötigt wird, wenn XML-Serialisierung (ich bin) verwendet wird. Ich habe meinen Build-Prozess so geändert, dass SGen zum Erstellen der Serialisierungsassembly verwendet wurde, und ich habe das Ergebnis den Referenzen jedes Projekts in der Lösung hinzugefügt, die meine XML-Klassen verwendet. Die Serialisierungsklassen machen es in die verknüpfte ausführbare .net-Datei (alle .net-DLLs werden zu einer einzigen verwalteten exe kombiniert); also nehme ich an, dass ich das richtig konfiguriert habe.Warum verwendet meine Anwendung CSC während der Ausführung?

Allerdings versucht meine App noch, csc auszuführen, wenn es ausgeführt wird. Mache ich etwas falsch mit der Serialisierungsassembly, was dazu führt, dass es zur Laufzeit neu erstellt wird; Oder macht meine App etwas anderes, das CSC erfordert, und wie ermittle ich was?

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

Generating an Xml Serialization assembly as part of my build

Edit: einige Tests mit einem modifizierten app.config Fertig die Serialisierung zu halten Dateien sichtbar, wenn generiert (getestet, indem die Kompilierzeit Erzeugungs rückgängig gemacht); und es scheint, dass ich sie vorher richtig erstellt habe. Es sei denn, es gibt einen anderen Teil des Frameworks, der csc zur Laufzeit aufruft und dessen Ergebnisse unter Verwendung einer anderen Flagge eingeblendet werden. Ich denke, das RemoteSoft-Tool ist wahrscheinlich daran schuld. Ich kann jedoch nicht sicher sein, weil die ausführbare Ausgabedatei keine Temps hinterlässt, die sie erstellt, auch wenn die app.config-Datei, die sie injediert hat, dies anzeigt.

Die App.info, die ich benutzte, war dies. Anderswo sah ich Beispiele mit einem Wert von 4, konnte aber keinen Unterschied zwischen ihrem Verhalten feststellen.

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

Antwort

0

Es ist möglich, dass, obwohl Sie die XML-Serialisierungsassemblys generiert haben, etwas über die Art und Weise der Remotesoft Linkers arbeitet bedeutet, dass der Rahmen eingebaute Serialisierung sie nicht erkennen kann. Ich sage nicht, dass das der Fall ist, nur dass es eine erste Anlaufstelle ist.

Ich weiß nicht die Details, wie das Serialisierungs-Framework entscheidet, ob csc oder nicht - aber das wäre wahrscheinlich die erste Sache zu untersuchen.