Вы можете использовать "XML-Document-Transform Syntax" Обычно этот синтаксис IST предназначен для использования в сети проектов, но вы можете настроить его для использования во всех проектах.
Вы должны изменить файл проекта (например. .csproj), добавив/обновив TransformXml-Task. В приведенном ниже примере преобразование выполняется во время компиляции путем применения преобразования в App.config. Как вы можете видеть, задача относится к переменной $ (Конфигурация), поэтому команды преобразования хранятся, например. в App.DEBUG.config или App.RELEASE.config. Вы можете изменить это на любую переменную msbuild, которая вам нравится. Если я правильно помню, это было $ (COMPUTERNAME), поэтому вам нужно разместить свое преобразование в App.MyMachineName.config.
<UsingTask TaskName="TransformXml"
AssemblyFile="C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/>
<Target Name="AfterBuild">
<!-- use App.$(COMPUTERNAME).config for specific machine configuration -->
<TransformXml Source="App.config"
Condition="Exists('App.$(Configuration).config')"
Transform="App.$(Configuration).config"
Destination="$(OutDir)$(AssemblyName).dll.config"/>
</Target>
Полное описание доступно на german blog.
`s, что вы машина специфическая конфигурация выглядит следующим образом:
<?xml version="1.0"?>
<!-- "App.MyMachineName.config" - File name corresponds to the transformation task -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
<add name="MyDbConnection"
connectionString="Data Source=MyServer;Initial Catalog=MyDb;"
providerName="System.Data.SqlClient"
xdt:Transform="SetAttributes"
xdt:Locator="Match(name)"/>
</connectionStrings>
</configuration>
В качестве альтернативы, вы можете использовать XSL Syntax
Вы могли бы попробовать, включая переменные окружения в' configSource', на авось что он автоматически расширяет их: ' ' –
Cocowalla