Попытка включить преобразованный App.config в файл XAP - PullRequest
0 голосов
/ 08 сентября 2011

У меня есть проект 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!

1 Ответ

0 голосов
/ 09 сентября 2011

Нашли решение, покопавшись в цели Silverlight 4.Оказывается, цель упаковщика XAP на самом деле получает элемент с именем XapFilesInputCollection, откуда поступают входные файлы.Элемент Content выглядит так, как будто он скопирован в этот элемент до запуска моей цели, поэтому изменение элемента Content впоследствии является неправильным подходом.

Все, что я сделал, это добавил преобразованные файлы непосредственно в элемент XapFilesInputCollection, и он работал какЯ ожидал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...