You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LibVlcSharp问题:Visual Studio启动调试时自动删除libvlc.dll相关文件

问题根本原因

该问题是Visual Studio构建系统的增量清理逻辑与LibVLCSharp NuGet包的原生文件分发逻辑冲突导致的,常见触发场景如下:

  • Visual Studio的增量构建跟踪器无法正确识别由NuGet自动注入的.targets任务拷贝的原生libvlc文件,会将这些文件标记为不属于当前项目输出的冗余文件,在启动调试前的增量清理步骤中删除。
  • 当你之前构建过其他目标平台(比如x86、ARM64)的项目,VS驻留的构建缓存会出现运行时标识符(RID)混淆,错误将win-x64的libvlc文件判定为多余文件。
  • 偶发的NuGet构建任务调度顺序异常:LibVLCSharp的原生文件拷贝任务被排在了VS的增量清理任务之前执行,导致刚拷贝完成的文件被后续的清理任务删除。

重启设备会清空Visual Studio的驻留构建缓存、任务调度队列,所以错误的冗余文件标记会被清除,功能恢复正常。

永久修复方案

  • 方案1:关闭增量构建的自动清理功能
    在你的项目.csproj文件的顶层<PropertyGroup>节点中添加如下配置即可,不会影响正常构建速度:
<EnableIncrementalClean>false</EnableIncrementalClean>
  • 方案2:固定项目运行时标识符
    如果你的项目仅需要win-x64平台支持,可在.csproj中固定RID,避免多平台缓存混淆:
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
  • 方案3:禁用热重载的自动清理逻辑
    若使用Visual Studio 2022,可通过路径「工具→选项→调试→常规」,取消勾选「热重载时删除多余的应用程序文件」,避免热重载校验触发文件删除。
  • 方案4:强制文件拷贝兜底
    可在项目生成后事件中添加如下命令,每次构建后强制覆盖libvlc文件,避免被删除:
xcopy "$(NuGetPackageRoot)videolan.libvlc.win-x64\*\runtimes\win-x64\native\*" "$(OutputPath)libvlc\win-x64\" /s /y

内容的提问来源于stack exchange,提问作者mcolhoun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 12:15:05