如果应用 moves/deletes 标记为 'Content' 的 UWP 资产不会重新部署

UWP assets marked as 'Content' aren't re-deployed if the app moves/deletes them

我的 UWP 应用程序的 Assets 文件夹中有一些 (SQLite .db) 文件,它们的 Build Action 在其属性中设置为 Content

当我构建应用程序时,这些被部署到应用程序,并且可以在运行时从 Windows.ApplicationModel.Package.Current.InstalledLocation StorageFolder 访问。

但是,我需要在首次启动应用程序时将它们从这个位置移动到另一个位置 (ApplicationData.Current.LocalFolder)。 它们包含初始数据,但稍后可能会被来自服务器的新 .db 文件替换。我将它们从这个初始位置移动到另一个位置,这样这只会在第一次启动时发生(因此在进一步启动时,该文件不在 InstalledLocation 中,因此它不会覆盖可能更新的文件)。

如果我这样做,它们将不再部署在应用程序的进一步构建中,即使我卸载了该应用程序。使它们重新部署的唯一方法是删除它们并将它们重新添加到项目中。

这是预期的行为吗?如果是这样,也许我以错误的方式处理这个问题?

我的解决方案是向 'touch' 我正在移动的文件(.db 文件)添加预构建事件。

在项目的 Properties 中,转到 Build Events 并添加以下内容作为 Pre-build event 命令行:

COPY /B $(ProjectDir)Assets\*.db+,, $(ProjectDir)Assets\

Windows 没有 touch 命令,但上面的代码本质上是这样做的 - 它更新所有 .db 的 修改日期 项目的 Assets 文件夹中的文件)。 Thanks!

然后 Visual Studio 会认为文件已更改并会在每次构建时重新部署它们。