Я бы предпочел не использовать целое решение для проекта веб-приложений из коробки.Мое решение состоит в том, чтобы использовать задачу XmlTransform, определенную в Microsoft.Web.Publishing.Tasks.dll напрямую (эта задача является ядром WebConfigTransformation). Таким образом, она достаточно гибкая и выполняет именно то, что вы ожидаете.Например, вот WebSiteTransformator.csproj, который я использую для преобразования web.config.
Здесь также приведен пример гибкости, которой невозможно достичь с помощью оригинального WebConfigTransformation: он принимает web.Template.config, применяет web. $ (Configuration) .config поверх него и записывает web.config.Это позволяет нам добавить сам файл web.config в список игнорирования в системе контроля версий.Это все еще действующий csproj, на который ссылается веб-сайт:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<SchemaVersion>2.0</SchemaVersion>
<OutputType>Library</OutputType>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<OutputPath>$(TEMP)\TransformWebConfig\bin</OutputPath>
<BaseIntermediateOutputPath>$(TEMP)\TransformWebConfig\obj\</BaseIntermediateOutputPath>
<IntermediateOutputPath>$(BaseIntermediateOutputPath)$(Configuration)\</IntermediateOutputPath>
<WebFolderName>$(SolutionDir)\MyWebSite\</WebFolderName>
</PropertyGroup>
<ItemGroup>
<Compile Include="Dummy.cs" />
</ItemGroup>
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="BeforeBuild">
<TransformXml Source="$(WebFolderName)Web.Template.config"
Transform="$(WebFolderName)Web.$(Configuration).config"
Destination="$(WebFolderName)Web.config" />
</Target>
</Project>