Visual Studio将打包成WP8 XAP不必要的XML doc文件

A-s*_*ent 8 .net xap visual-studio visual-studio-2012 windows-phone-8

如果在Visual Studio中创建Windows Phone 8应用程序并使用nuget或手动提供的XML文档文件引用任何lib,则Visual Studio也会自动将这些XML文件打包到输出XAP中.

在我们的例子中,Visual Studio的这种奇怪行为几乎使XAP大小增加了两倍.(我们总共有8Mb的xml文档.)

WP7应用程序项目没有这样的问题.

如何通过强制Visual Studio不包装不必要的文档文件来减小xap文件的大小?

更新14/02/2013:

重现问题的步骤:

  1. 使用Visual Studio创建Windows Phone 8 App项目
  2. 使用NuGet包管理器参考"Reactive Extensions - Main Library"
  3. 构建解决方案
  4. 转到Bin文件夹并解压缩XAP存档

您会发现许多不必要的XML文档文件,如"System.Reactive.Core.xml"

我认为这是安全问题,因为如果您为项目(或解决方案中的其他项目)启用XML文档生成,那些XML文档也将打包到XAP中 - 当任何人都可以阅读您的代码注释时,这是非常不受欢迎的.

Ped*_*mas 6

更新于2013年2月20日

正如@ A-student在评论中指出的那样,我之前的解决方案将迫使您在解决方案中的每个项目中添加MSBuild内容.

这只需要您在实际具有XAP/APPX文件输出的项目中输入它:

<PropertyGroup>
  <FilesToXapDependsOn>$(FilesToXapDependsOn);AfterFilesToXapDependsOn</FilesToXapDependsOn>
</PropertyGroup>
<Target Name="AfterFilesToXapDependsOn">
  <ItemGroup>
    <FilteredPackagingOutputs Remove="@(FilteredPackagingOutputs)" Condition="'%(FilteredPackagingOutputs.OutputGroup)' == 'CopyLocalFilesOutputGroup' AND '%(FilteredPackagingOutputs.Extension)' == '.xml'" />
  </ItemGroup>
</Target>
Run Code Online (Sandbox Code Playgroud)

这有点像黑客,应该小心使用(现在还不确定这可能会带来什么影响),但现在似乎完美地完成了这项工作!

  • @Pedro在深入调查问题后,我发现应该修改VS解决方案中的每个WP8项目文件(不仅仅是主要的) - 这对我有所帮助.非常感谢您完成的工作! (2认同)