MSIX 未打包所有依赖项

Posted

技术标签:

【中文标题】MSIX 未打包所有依赖项【英文标题】:MSIX not packaging all dependencies 【发布时间】:2020-10-08 15:48:37 【问题描述】:

我一直在考虑使用打包项目将我的 WPF .Net Core 3.1 应用程序打包到 MSIX 安装程序中。

但是,在手动调试或测试输出时,应用程序在启动时崩溃,因为它缺少我的应用程序所依赖的 Microsoft.EntityFrameworkCore.Design dll。我不太明白为什么会这样。

我不直接引用这个包,只是 Microsoft.EntityFrameworkCore.Sqlite 和 Microsoft.EntityFrameworkCore.Tools 包,但是当我尝试直接引用它时,行为不会改变。

我尝试按照本指南进行设置以供参考:https://docs.microsoft.com/en-us/windows/apps/desktop/modernize/modernize-wpf-tutorial-5

我可以看到文件夹中没有 dll,我需要在本指南之上做些什么才能让我的应用程序运行吗? dll 在应用程序本身的构建目录中提供,而不是在包的构建目录中。

任何建议都会很有帮助

【问题讨论】:

【参考方案1】:

所以在摆弄设置后,我发现引用缺少的 Microsoft.EntityFrameworkCore.Design 包的 Microsoft.EntityFrameworkCore.Tools 包有一些属性阻止它包含在包项目输出中。

在 EFC.Tools 引用上按 F4 时,我发现它的 Private assets 属性设置为“全部”。查看documentation,我可以看到它会阻止 dll 传递到需要它的包项目。

删除此属性似乎已修复所有问题。考虑到虽然这是默认设置,但了解这是否是正确的解决方案会很有帮助,但对我来说更像是一种解决方法。

【讨论】:

我也有同样的问题。我尝试了您的解决方案,删除了“全部”。但是,只要您尝试执行 EF 方法,应用程序仍然会崩溃。我也试过“无”。不知道从这里去哪里。 我不确定我能提出什么建议。我确实观察到有时 VS 可能很顽固,有时会恢复您的更改 我最终使用您的建议让它工作。谢谢。它确实感觉更像是一种解决方法,而不是真正的修复。如果将应用程序附加到 WinDbg,您将看到:找不到应用程序依赖项清单 (EntityFrameworkSample.deps.json) 中指定的程序集:包:'Microsoft.EntityFrameworkCore.Design',版本:'3.1.6'。无论如何,我认为这是一个真正的问题,希望能得到更好的解决。

以上是关于MSIX 未打包所有依赖项的主要内容,如果未能解决你的问题,请参考以下文章

Maven WAR Overlays - 包括未打包的依赖项

无法从 MSIX 打包应用程序加载外部 DLL

使用 MSIX 打包的 WPF 无法通过 Microsoft Store 验证

自定义 Visual Studio MSIX 打包项目输出

如何自动启动使用 Msix 打包的应用程序?

我可以在 MSIX 包中打包预构建的二进制 exe 吗?