Silverlight 4.0 正在尝试在XAP文件中包含已转换的App.config

Silverlight 4.0 正在尝试在XAP文件中包含已转换的App.config,silverlight-4.0,msbuild,Silverlight 4.0,Msbuild,我有一个包含多个配置文件的Silverlight项目,并且正在使用如下所示的转换方法: 不过,这种方法并不适用于Silverlight项目。我已将MSBuild项目重新编写为如下所示: <ItemGroup> <None Include="App.config" /> <None Include="App.QABuild.config"> <DependentUpon>App.config</DependentUpon>

我有一个包含多个配置文件的Silverlight项目,并且正在使用如下所示的转换方法:

不过,这种方法并不适用于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>

App.config
....
这段代码为正确的配置生成正确的输出文件,但是它从未包含在XAP文件中,即使我将输出配置放入内容项组中。我需要做的就是让输出配置包含在输出XAP中,但我无法做到这一点


谁能告诉我我做错了什么?无论如何,我都不是MSBuild专家

通过挖掘Silverlight 4目标找到了解决方案。事实证明,XAP packager目标实际上获取了一个名为XapFilesInputCollection的项,这就是输入文件的来源。内容项看起来像是在我的目标运行之前复制到此项,因此在运行之后修改内容项是错误的方法

我所做的只是将转换后的文件直接添加到XapFilesInputCollection项中,它按照我的预期工作