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

时间:2013-02-13 08:33:09

标签: .net visual-studio visual-studio-2012 windows-phone-8 xap

如果您在Visual Studio中创建Windows Phone 8应用程序并引用任何带有nuget或手动提供的XML文档文件的库,Visual Studio将自动将这些XML文件打包到输出XAP中。

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

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

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

2013年2月14日更新:

重现问题的步骤:

  1. 使用Visual Studio
  2. 创建Windows Phone 8应用程序项目
  3. 使用NuGet包管理器参考“Reactive Extensions - Main Library”
  4. 构建解决方案
  5. 转到Bin文件夹并解压缩XAP存档
  6. 你会发现许多不必要的XML文档文件,如“System.Reactive.Core.xml”

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

1 个答案:

答案 0 :(得分: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>

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