我有一个使用 VideoLAN.LibVLC.Windows 和 LibVLCSharp.Winforms NuGet 包的 WinForms .NET 4.8 Visual Studio ClickOnce(平台=任何 CPU)应用程序。
从 NuGet 更新到这些库的最新版本(3.0.20 和 3.8.5)后,我发现客户端 PC 上未安装 libvlc 目录(和内容)。 libvlc 目录和内容由 Visual Studio 在生成/发布过程中发布到服务器。在客户端 PC 上安装后,libvlc 目录不会从服务器复制到客户端 PC。以前,它被复制到客户端 PC。过去几年我定期更新 VLC 版本,没有出现任何问题。
更新之前,NuGet 版本为 3.0.18 和 3.7.0。
发布的 ClickOnce xxxxx.exe.mainfest 包含使用旧版本 VLC NuGet 软件包时的 libvlc 文件夹文件,但使用当前版本的 VLC NuGet 软件包时不包含 libvlc 文件夹文件。
我启用了诊断日志记录,生成了超过 8K 行。我在日志中看到 libvlc 目录文件对于构建/发布过程是已知的,但看不到任何明显的消息来告诉我为什么从服务器安装时 libvlc 目录文件没有发布到客户端。
我决定尝试阅读 LIBVLC NuGet 相关文档,看看是否有任何内容可以给我提供解决方案的想法。我找到了此页面:https://code.videolan.org/videolan/libvlc-nuget/-/blob/master/library-copy-enabling.md并决定修改我的 Visual Studio 项目文件。
至
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
和
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
我补充说:
<VlcWindowsX64Enabled>true</VlcWindowsX64Enabled>
<VlcWindowsX86Enabled>true</VlcWindowsX86Enabled>
这样做就解决了问题。我不知道为什么它在没有这些参数的情况下工作了好几年,但考虑问题已经解决了。