如果您在 Visual Studio 中创建 Windows Phone 8 应用程序,并使用 nuget 或手动提供的 XML 文档文件引用任何库,Visual Studio 也会自动将这些 XML 文件打包到输出 XAP 中。
在我们的例子中,Visual Studio 的这种奇怪行为使 XAP 大小几乎增加了一倍。 (我们总共有 8Mb 的 xml 文档。)
WP7应用项目不存在这样的问题。
如何通过强制 Visual Studio 不打包不必要的文档文件来减小 xap 文件的大小?
2013 年 2 月 14 日更新:
重现问题的步骤:
- 使用 Visual Studio 创建 Windows Phone 8 应用项目
- 使用 NuGet 包管理器引用“响应式(Reactive)扩展 - 主库”
- 构建解决方案
- 转到 Bin 文件夹并解压 XAP 存档
你会发现有很多不必要的XML文档文件,比如“System.Reactive.Core.xml”
我认为这是安全问题,因为如果您为您的项目(或解决方案中的其他项目)启用 XML 文档生成,这些 XML 文档也将被打包到 XAP 中 – 当任何人可能阅读您的评论时,这是非常不希望的代码。
最佳答案
更新于 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>
这有点像黑客,应该谨慎使用(现在不确定这实际上可能会产生什么影响),但目前看来可以完美完成这项工作!
关于.net - Visual Studio 将不必要的 XML doc 文件打包到 WP8 XAP 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14849374/