LibVlcSharp 之谜:Visual Studio 在 Debug>Start Debugging 上删除 libvlc.dll 个文件

LibVlcSharp Mystery: Visual Studio deletes libvlc.dll files on Debug>Start Debugging

我有一个与 LibVLCSharp 和 bin\Debug 输出相关的间歇性构建问题。

当我构建一个包含 LibVLCSharp 项目的解决方案时,我可以在最终的 win-x64 输出文件夹中看到 libvlc.dll,但是当我开始调试时,以下文件被删除,应用程序失败并显示:

LibVLCSharp.Shared.VLCException: 'Failed to load required native libraries. 
Have you installed the latest LibVLC package from nuget for your target platform?

唯一被删除的文件是:

这是一个间歇性问题,似乎在我重新启动后得到解决。

在什么情况下解决方案输出文件夹中的文件会在调试启动时被清除?

bin\Debug\net5.0-windows\libvlc\win-x64\ 

我可以通过将文件复制回来手动解决这个问题,但我试图理解为什么会这样。

解决方案中没有预先或 post 构建步骤。

LibVLC-nuget 项目旨在直接在启动项目中引用。

这是因为我们将目标文件嵌入到创建执行 BeforeBuild 的任务的 NuGet 包中,我不确定这在引用的项目中如何工作。你可以在那里看到它:https://github.com/mfkl/libvlc-nuget/blob/56178d3d4fd4d5b4874d41e5e9de07116be4cb64/build/VideoLAN.LibVLC.Windows.targets#L16

我很确定 msbuild 不会每次都重建您的依赖项目,因此不会捕获条件“内容”文件。

我们这样做,否则 visual studio 项目树将充满插件文件夹中的每个 .dll 文件,这会减慢 visual studio 进程。