Из моего файла .csproj:
<Content Include="log4net.config">
<SubType>Designer</SubType>
</Content>
<Content Include="log4net.Release.config">
<DependentUpon>log4net.config</DependentUpon>
</Content>
<Content Include="log4net.Debug.config">
<DependentUpon>log4net.config</DependentUpon>
</Content>
<Content Include="log4net.Live.config">
<DependentUpon>log4net.config</DependentUpon>
</Content>
<Content Include="log4net.Demo.config">
<DependentUpon>log4net.config</DependentUpon>
</Content>
Внизу моего файла .csproj:
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
<Target Name="AfterCompile" Condition="exists('log4net.$(Configuration).config')">
<TransformXml Source="log4net.config"
Destination="$(IntermediateOutputPath)$(TargetFileName).config"
Transform="log4net.$(Configuration).config" />
<ItemGroup>
<AppConfigWithTargetPath Remove="log4net.config"/>
<AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
<TargetPath>$(TargetFileName).config</TargetPath>
</AppConfigWithTargetPath>
</ItemGroup>
</Target>
Из log4net.config
<connectionString name="ConnName"
value="Data Source=localhost\sqlexpress;Initial Catalog=localdb;Persist Security Info=True;Integrated Security=SSPI;" />
Из log4net.Live.config (удалены конфиденциальные данные)
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionString name="ConnName" value="Data Source=127.0.0.1;Initial Catalog=DBName;Persist Security Info=True;User ID=userid;Password=pword"
providerName="System.Data.SqlClient" xdt:Transform="Replace" xdt:Locator="Match(name)" />
</configuration>
Я проверил вывод msbuild и вижу, что он правильно преобразовал мой web.config, но я не вижу вывода для преобразования log4net. Кроме того, когда я проверяю файл log4net.config после публикации, он имеет исходную строку подключения.
Что я делаю не так :)?
Спасибо!
Обновление
У меня были ошибки в коде, который msbuild выводил в виде предупреждений, которых я не видел. Я исправил их и теперь получаю некоторые результаты от MSBuild:
AfterCompile: Transforming Source Файл: log4net.config Применение файла преобразования: log4net.Live.config Выходной файл: obj \ Live \ Common.UI.Web.dll.config
Преобразование выполнено успешно
Это все еще проблема, потому что файл должен называться log4net.config, а не Common.UI.Web.dll.config ...
По какой-то причине
$ (TargetFileName)
принимает имя из имени файла .csproj. Если я заменю его на log4net, он будет правильно выводить
Обновление
Файл застрял в папке obj и не извлекается при публикации.