Ich schreibe eine Spieleentwicklungs-IDE, die .NET-Projekte erstellt und kompiliert (an denen ich in den letzten Jahren gearbeitet habe) und diese gerade aktualisiere, um Ausgaben nicht nur für Windows/Visual Studio zu erzeugen, aber auch für Linux/MonoDevelop (ein aufregend einfacher Prozess für .NET, der aber immer noch ein paar Verbesserungen benötigt).Wer kopiert app.config in app.exe.config?
Als Teil davon habe ich gefunden, dass es notwendig ist, eine app.config-Datei als Teil davon zu erstellen, um abhängige DLL-Namen Linux-Abhängigkeitsnamen mit <dllmap> Elementen zuzuordnen. Ich bin verwirrt darüber, wer dafür verantwortlich ist, die app.config-Datei in den Ausgabenamen app.exe.config zu kopieren. In einem Visual Studio-Projekt scheint die Buildaktion für app.config normalerweise auf "None" festgelegt zu sein, und seine Einstellungen geben an, dass es nirgendwo kopiert wird. Wenn Visual Studio das Projekt jedoch kompiliert, generiert es app.exe.config (obwohl ich manchmal fand, dass das unzuverlässig ist). Wenn ich MSBuild verwende, um eine Lösungsdatei zu erstellen, die von der IDE (zu Debugzwecken) generiert wird, kopiert MSBuild app.config in app.exe.config. Aber wenn ich das Projekt mit CSharpCodeProvider.CompileAssemblyFromFile kompiliere, mag es (natürlich) nicht, dass die Konfigurationsdatei als Quellcode enthalten ist ("app.config (1,1)"): Fehler CS0116: Ein Namespace enthält nicht direkt Elemente wie Felder oder Methoden "), und natürlich kopiert es es nicht zur Ausgabe, wenn ich es nicht als eine Eingabe einschließen. Ist es in meiner Verantwortung, app.config einfach in app.exe.config zu kopieren, oder gibt es dafür eine Standardmethode?
Ist die erste * .config-Datei fest installiert? In meiner IDE ist es denkbar, dass die Datei app.config umbenannt oder eine andere hinzugefügt wird (genau wie in Visual Studio). Es erscheint mir komisch, dass die IDE diese geheime Aktion für Konfigurationsdateien hat (ich denke MonoDevelop verhält sich in dieser Hinsicht ähnlich, weil ich dort auch keine spezielle Aktion für die Konfigurationsdateien finden konnte). Ich weiß nicht, wie es überhaupt zu welchen Dateien diese geheime Aktion passt.
Um zu klären, meine Frage ist, da ich CSharpCodeProvider bin mit dem Code zu kompilieren (ohne wie MSBuild zu einem Shell-Befehl zurückgreifen, das Projekt zu kompilieren), was der richtige Weg ist, um die app.exe zu erhalten .config in der Ausgabe? – BlueMonkMN
Ich würde vorschlagen, MSBuild in Ihrer IDE zu verwenden und MSBuild-Aufgaben für jede spezielle Build-Ausgabe zu erstellen, die Sie generieren, für die MSBuild keine Unterstützung bietet. Dies würde MSBuild ermöglichen, zu Ihren Lösungen zu kompilieren. Darüber hinaus erleichtert dies die Integration Ihres Produkts in die kontinuierliche Integration wie TeamCity. – grover
MSBuild kann meine Lösungen bereits kompilieren. Und wenn dies der Fall ist, wird app.config bereits korrekt verarbeitet. CSharpCodeProvider scheint eine direktere Lösung mit weniger Overhead als MSBuild zu sein. Die IDE generiert eine Lösungsdatei, verwendet diese jedoch nicht, wenn sie intern kompiliert wird. – BlueMonkMN