2017-07-19 4 views
1

Wir verwenden eine Bibliothek, deren Wert in der Datei web.config mit jedem Build aktualisiert werden muss. Gibt es eine Möglichkeit, dies nativ zu tun?Gibt es eine native Möglichkeit, web.config-Einstellungen dynamisch zu ändern?

Wir verwenden eine Bibliothek, die einen benutzerdefinierten Konfigurationsabschnitt in der web.config

Die Version Attribut mit jedem Build aktualisiert werden muss, hat. Increment oder sogar DateTime.Now würde funktionieren.

<clientDependency version="6"> 
... 
</clientDependency> 
+0

Können Sie angeben, was aktualisiert werden muss und warum? Dies scheint keine Best Practice zu sein. Allerdings mit dem neuen Task Runner Explorer und der [Config "include" -Funktion] (https://stackoverflow.com/questions/10300063/can-i-create-config-file-and-include-it-to-web-config) es könnte möglich sein. –

+0

Sie können Webkonfigurations-Transformationen für verschiedene Verbindungszeichenfolgen oder Anmeldeinformationen für dev/test/prod verwenden, aber wenn es sich um eine Build-Nummer handelt, die jeden Build ändert, benötigen Sie möglicherweise eine Post-Build-Task, die die Konfigurationsdatei bearbeitet. –

+1

Wenn Sie Änderungen an * deploy * vornehmen wollten, können Sie anstelle von build Transformationen durchführen. Überprüfen Sie Folgendes: [Vorgehensweise: Transformieren von Web.config beim Bereitstellen eines Webanwendungsprojekts] (https://msdn.microsoft.com/en-us/library/dd465318 (v = vs.100) .aspx) –

Antwort

1

Sie sollten zuerst überprüfen, warum genau die Konfiguration bei jedem Build ändern. Das scheint nicht gut zu sein. Vielleicht kannst du das ändern.

Mit Visual Studio 2013 wurde jedoch der Task Runner Gulp eingeführt.

Sie könnten es ein wenig missbrauchen.

Basicly:

+0

Erstens ist dies weder ungewöhnlich noch schlecht. Es gibt * verschiedene Builds (Release vs Debug) und Umgebungen (Entwicklung vs Testing vs Staging vs Produktion). Zweitens ist dies bereits in der Pipeline * deployment * verfügbar. Sie * können * verschiedene Umwandlungen pro Build * und * Umgebung anwenden.Sie müssen keine externen Tools verwenden. –

+0

Tatsächlich wird diese Funktionalität nicht nur von Visual Studio, sondern auch von Bereitstellungstools wie Octopus Deploy, Release Management Services usw. unterstützt, um die Bereitstellung in verschiedenen Umgebungen zu erleichtern –

+0

@PanagiotisKanavos Können Sie ein Beispiel dafür angeben, wie Sie diesen Wert erhöhen können bauen? Ich weiß, wie man es mit einem statischen Wert durch Transformationen ersetzt – user3953989

1

Sie können versuchen, MSBuild Tasks zu verwenden.

Vielleicht XMLPoke die web.config mit einer formatierten Datum/Zeit-String zu aktualisieren:

<Target Name="EchoTime"> 
    <Time Format="yyyyMMddHHmmss"> 
     <Output TaskParameter="FormattedTime" PropertyName="currentTime" /> 
    </Time> 
    <Message Text = "$(currentTime)" /> 
</Target> 

<Target Name="UpdateWebConfig"> 
    <XmlPoke 
     XmlInputPath="web.config" 
     Query="//<complete-path>/clientDependency/@version" 
     Value="$(currentTime)" /> 
</Target> 

Verschieben des aktualisierbar Abschnitt in eine externe Datei, auch configSource verwendet, könnte die Arbeit leichter machen.

Verwandte Themen