2016-07-22 24 views
2

Ich habe eine optionale Konfigurationsdatei in meiner Anwendung, die für die instanzspezifische Konfiguration verwendet wird. Die Anwendung funktioniert ohne sie, und es ist nur notwendig, wenn Sie einige zusätzliche Funktionen konfigurieren möchten. Es sollte daher nicht in das Quellcode-Steuerelement aufgenommen werden, da es für jede Entwickler- und Client-Bereitstellung nicht benötigt wird und diejenigen, die dies tun, unterschiedliche Werte haben.Ist es möglich, dass csproj/msbuild Dateien als optionalen Inhalt enthält?

Ich habe ein Problem herauszufinden, wie dies für die kontinuierliche Bereitstellung zu konfigurieren. Ich kann die Datei auf dem Build-Server ohne Probleme generieren. Wie auch immer,, da MsDeploy den csproj liest, um zu ermitteln, welche Dateien bereitgestellt werden sollen, muss diese Datei von meinem csproj nachverfolgt werden, um tatsächlich auf den Bereitstellungsserver verschoben zu werden. Aber wenn ich es von meinem csproj verfolgt habe, dann wird es nicht mehr optional und ich kann die Anwendung nicht ohne es erstellen. Ich benutze Mercurial, das keine commit-one-version-ignore-nachfolgende Funktion (git's --assume-unchanged) hat, so dass Optionen auf dieser Front ziemlich begrenzt scheinen. Ich bin sehr davon überzeugt, dass es möglich sein sollte, ein Repo zu klonen und das Projekt sofort zu starten, also mag ich es wirklich nicht, etwas zu begehen, das nicht bauen kann.

Gibt es eine Möglichkeit in der csproj-Datei anzugeben, dass eine Datei als Inhalt enthalten sein soll, wenn sie vorhanden ist und andernfalls ignoriert wird?

Antwort

4

Wenn dies die einzige .config-Datei im Verzeichnis ist, dann können Sie CSPROJ Datei manuell bearbeiten Sie Ihre Datei über Dateimaske verweisen:

<ItemGroup> 
    <Compile Include="*.config"/> 
</ItemGroup> 
+0

Hmm ... Ich kannte Dateimuster, aber didn‘ Ich denke in diesem Fall daran. Es ist eine ziemlich gute Idee. Beachten Sie, dass Sie Visual Studio nicht zum Erstellen oder Entfernen von Konfigurationsdateien ** verwenden sollten, da dies das Muster automatisch erweitert und nicht mehr funktioniert. (Dies ist immer noch ein Fehler wie bei VS 2015 Update 2) –