2017-01-27 6 views
3

Dies ist wahrscheinlich ein Fehler, aber ich habe 2 F # Projekte in meiner Lösung. Einer ist eine Konsolen-App, der andere ist eine Test-App (expecto test also technisch auch Konsole). Es gibt auch 3 andere C# -Projekte in der Lösung.Wie erzwinge app.config zu exe.config zu werden

Wann immer ich meine Lösung erstellen die app.config im Startprojekt wird nicht in die foo.exe.config kopiert. Stattdessen wird eine Standard-F # -Konfigurationsdatei erstellt und dort platziert.

Die Datei, die wie folgt aussehen auch nur entfernt wie das

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-4.4.0.0" newVersion="4.4.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

Keiner der Anwendung configs in meiner Lösung Aussehen erzeugt wird. Ich habe überprüft, dass meine app.configs auf Content-Modus eingestellt sind. Auch das ist nur ein Problem mit der Hauptanwendung; Die Test-App kopiert app.config in ihr bin/debug ganz gut.

Ich habe auf das Öffnen von bin und Ziehen und Ablegen der richtigen exe.config in das Verzeichnis jedes Mal, bevor ich das Programm ausführen möchten. Ich habe keine Ahnung, wo ich anfangen soll, um herauszufinden, was wahrscheinlich nicht richtig konfiguriert ist.

+0

Erwägen Sie, weitere Details zu Ihrer Lösung bereitzustellen. Es wäre schwierig, es durch Raten zu reproduzieren. – bytebuster

+0

Das sieht aus, was 'Paket' erzeugen würde, wenn man es gut fragt. Aber ich kann Ihnen nicht genau sagen, wo diese Datei herkommt, ohne Ihre Projektdateien zu sehen. Wahrscheinlichkeiten sind, dort ist etwas, das Sie nicht bemerken. –

+0

Ich glaube nicht, dass Sie App.config als Inhalt markieren müssen - in der Tat die Standardeigenschaften, wenn Sie eine neue F # -Konsolenanwendung erstellen, sind keine/nicht kopieren (und die dedizierte Aufgabe irgendwo in der Standard '.targets' Datei vergraben Explizit kopiert und benennt es um). – scrwtp

Antwort

3

Warum denken Sie, dass es ein Fehler ist? Tausende app.configs werden jede Sekunde kopiert - man nimmt an, dass das ziemlich gut getestet ist. Wahrscheinlich stimmt etwas nicht damit, wie Ihr Projekt eingerichtet wird. Vielleicht möchten Sie in die Projektdatei schauen (Hinweis: es ist eine normale XML-Datei, die Sie lesen können).

Wenn Sie Ihr Projekt über VS erstellen, würde ich vorschlagen, zuerst MSBuild Ausführlichkeit (Extras -> Optionen -> Projekte und Lösungen -> Erstellen und Ausführen Registerkarte).

Sobald Sie das erledigt haben, säubern Sie Ihr Projekt und erstellen Sie es neu. Wenn Sie nach CopyAppConfigFile suchen, sollten Sie in der Lage sein, Ausgabe von der Aufgabe zu finden, die die app.config-Datei in dem Fenster Build Output kopiert. Dies sollte Ihnen sagen, was, wenn überhaupt, wirklich kopiert wird - und von wo.

Auf die gleiche Weise können Sie feststellen, ob eine andere Aufgabe, die Teil Ihres Build-Prozesses ist, versucht, die Datei aus irgendeinem Grund zu überschreiben - solange sie eine ordnungsgemäße Protokollausgabe erzeugt.

+0

bumping MSBuild (Dateien) Ausführlichkeit ... kaum möglich ;-) robkuz

+0

@robkuz: Sie haben nicht gesehen, was ich gesehen habe ...;) – scrwtp

+0

Aus irgendeinem Grund konnte Msbuild nicht aufräumen Standardkonfigurationsdatei, die in obj \ Debug \ Crawler.fsproj.Crawler.exe.config generiert wurde. Irgendwann ist es dort steckengeblieben. Ich ging hinein und die Hand löschte es und alles funktioniert jetzt wie gewohnt. – Yojin

Verwandte Themen