У меня есть проект Silverlight с несколькими файлами конфигурации, и я использую подход преобразования, показанный здесь:
Преобразование App.Config для проектов, не являющихся веб-проектами в Visual Studio 2010?
Этот подход не работает как есть для проектов Silverlight. Я переписал проект MSBuild, чтобы он выглядел так:
<ItemGroup>
<None Include="App.config" />
<None Include="App.QABuild.config">
<DependentUpon>App.config</DependentUpon>
</None>
</ItemGroup>
....
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="BeforeCompile" Condition="Exists('App.$(Configuration).config')">
<!-- Generate transformed app config in the output directory -->
<Message Importance="high" Text="Transforming 'App.$(Configuration).config' to output config file..." />
<TransformXml Source="App.config" Destination="$(OutputPath)App.config" Transform="App.$(Configuration).config" />
<ItemGroup>
<Content Include="$(OutputPath)App.config" />
</ItemGroup>
</Target>
<Target Name="BeforeCompile" Condition="!Exists('App.$(Configuration).config')">
<Message Importance="high" Text="Using default 'App.config' as output config file..." />
<Copy SourceFiles="App.config" DestinationFiles="$(OutputPath)App.config" />
<ItemGroup>
<Content Include="$(OutputPath)App.config" />
</ItemGroup>
</Target>
Этот код генерирует правильный выходной файл для правильной конфигурации, однако он никогда не включается в файл XAP, даже если я помещаю выходную конфигурацию в группу элементов содержимого. Все, что мне нужно, - это чтобы выходная конфигурация была включена в выходной XAP, но я не могу этого добиться.
Может кто-нибудь сказать мне, что я делаю не так? Я ни в коем случае не эксперт MSBuild!