我正在将使用 MVVMCross 编写的手机应用程序移植到 Windows RT。该应用程序使用 SQLite,并且在部署时有一个不为空的数据库,因此我希望将其打包在安装文件夹中,并在应用程序启动时复制到 LacalFolder。
数据库确实属于手机和 WinRT 之间共享的“核心”程序集,但如果我将文件放入核心项目中(位于名为 Data 的自定义目录中),将其定义为内容并设置“始终复制”标志,该文件就会执行此操作不会被复制到应用程序安装文件夹。
如果我将文件放在 UI 项目下的目录中,文件将按预期复制。有什么建议可以避免为同一资源保留两个文件(以及这会导致的麻烦)吗?
感谢帮助
最佳答案
Windows 8 WinRT 项目默认使用内容类型,该类型对文件进行松散打包(它们不包含在程序集中)。如果您的 Core 程序集是作为项目的解决方案的一部分 - VS 将正确打包它,将所有内容复制到 appx 的“Core”子文件夹中。如果您只是在解决方案中引用了 dll 文件 - 资源文件将不会被打包。这种情况下的解决方案是采取一些措施让这些附加文件与 dll 一起部署。一种选择是将 dll 与 Assets 一起打包为 .vsix,如 Tim Heuer 的 blog post 中所述。 。另一种方法是执行您所做的操作并将文件放入应用程序项目中。您可以将文件添加到应用程序项目“作为链接”以避免拥有该文件的副本 - 它使 Visual Studio 创建一种到该文件的逻辑/符号链接(symbolic link),而不是创建副本 - 只需右键单击该文件中的文件夹即可解决方案资源管理器/应用程序项目,选择“添加/现有项目”,浏览到文件,而不是点击“添加”按钮 - 使用按钮上的下拉三角形选择“添加为链接”。
关于windows-runtime - 从辅助程序集中部署支持文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14586945/