8

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

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

WP7 应用项目不存在这样的问题。

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

2013 年 14 月 2 日更新:

重现问题的步骤:

  1. 使用 Visual Studio 创建 Windows Phone 8 应用项目
  2. 使用 NuGet 包管理器参考“反应式扩展 - 主库”
  3. 构建解决方案
  4. 转到 Bin 文件夹并解压缩 XAP 存档

你会发现有很多不必要的 XML 文档文件,比如“System.Reactive.Core.xml”</p>

我相信这是安全问题,因为如果您为您的项目(或解决方案中的其他项目)启用 XML 文档生成,这些 XML 文档也将被打包到 XAP 中——当任何人都可能阅读您的代码的注释时,这是非常不可取的。

4

1 回答 1

6

更新于 20/02/2013

正如@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>

这有点像 hack,应该小心使用(现在不确定这可能实际上有什么影响),但现在似乎完美地完成了这项工作!

于 2013-02-14T13:56:27.257 回答