【问题标题】:LibVlcSharp Mystery: Visual Studio deletes libvlc.dll files on Debug>Start DebuggingLibVlcSharp 之谜:Visual Studio 在 Debug>Start Debugging 上删除 libvlc.dll 文件
【发布时间】:2021-10-15 09:28:54
【问题描述】:

我遇到了与 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?

唯一被删除的文件是:

  • libvlc.dll
  • libvlc.lib
  • libvlccore.dll
  • libvlccore.lib

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

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

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

我可以通过将文件复制回来手动解决此问题,但我试图了解为什么会发生这种情况。

解决方案中没有构建前或构建后的步骤。

【问题讨论】:

  • LibVLC 包是否正确安装在 Starter 项目中? (它不应该安装在其他项目上,而是安装在您启动的项目上。
  • 否则,我们需要一个最小的可重现项目来进行测试。您对 msbuild 目标有什么特别之处吗?
  • 这可能与您的“Fullfilled.Tasks”项目有关吗?
  • 你能在这些文件上使用copy always 属性吗?
  • @cube45 - 我在引用 libvlcsharp api 的 Tasks 项目中安装了 LibVLC,但在 Startup 项目(Starter)中没有安装。这可能是问题所在 - 这是有道理的,因为我不需要“编译”libvlc.dll,只需将其链接到启动应用程序,并且需要在我使用 api 的项目中添加 libvlvsharp 作为参考。接得好。我对 msbuild 项目没有什么特别的,都是默认的。让我测试并回复给你。谢谢!

标签: c# .net visual-studio libvlcsharp


【解决方案1】:

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

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

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

我们这样做,因为否则 Visual Studio 项目树将被插件文件夹中的每个 .dll 文件填充,这会减慢 Visual Studio 进程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 2022-12-01
    相关资源
    最近更新 更多