2011-01-17 8 views
3

In meinem app.config bauen, ich habeMSBuild ändern Config-Wert basierend auf Debug/Release

<endpoint address="http://debug.example.com/Endpoint.asmx" stuff /> 

Wie kann ich die Build-Tasks ändern, so dass, wenn ich einen Release bauen zu tun ändert es die Endpunkt-Adresse

<endpoint address="http://live.example.com/Endpoint.asmx" stuff /> 

Antwort

2

Wenn Sie die MSBuild extension pack verwenden, können Sie mit der Xml-Task einen Eintrag in einer XML-Datei ändern. Importieren Sie die benutzerdefinierten Aufgaben in Ihrer MSBuild-Datei:

<Import Project="$(MSBuildExtensionsPath)\ExtensionPack\MSBuild.ExtensionPack.tasks" /> 

und aktualisieren einen XML-Wert:

<PropertyGroup> 
    <OldValue>http://debug.example.com/Endpoint.asmx</OldValue> 
    <NewValue>http://live.example.com/Endpoint.asmx</NewValue> 
</PropertyGroup> 

<MSBuild.ExtensionPack.Xml.XmlFile 
    TaskAction="UpdateAttribute" 
    File="app.config" 
    XPath="/configuration/system.serviceModel/client/endpoint[@address='$(OldValue)']" 
    Key="address" 
    Value="$(NewValue)" 
/> 

Ersatz Ihre XPath und dies auch nur bei einem Release-Build ausführen Verwendung Zustand.

4

Wenn Ihr Debug/Release-Konfigurationen genannt Debug und Freigabe bzw. das sollte es tun:

<PropertyGroup Condition="'$(Configuration)' == 'Debug'"> 
    <endpoint address="http://debug.example.com/Endpoint.asmx" stuff /> 
    <!-- other things depending on Debug Configuration can go here --> 
</PropertGroup> 
<PropertyGroup Condition="'$(Configuration)' == 'Release'"> 
    <endpoint address="http://live.example.com/Endpoint.asmx" stuff /> 
</PropertGroup> 
Verwandte Themen