Как преобразовать конфигурацию log4net, например web.config?

Из моего файла .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 и не извлекается при публикации.

13
задан Sayed Ibrahim Hashimi 11 February 2012 в 20:05
поделиться