gpt4 book ai didi

c# - LibVLC 依赖项应该添加到哪个项目?

转载 作者:行者123 更新时间:2023-12-04 01:28:05 25 4
gpt4 key购买 nike

我有一个 .NET Framework 项目 A 的解决方案,它构建了一个包含类 MyPlayer 的 winforms 应用程序,它需要 LibVLCSharp。为了正确构建和运行应用程序,我必须添加以下 Nuget 包:

  • LibVLCSharp
  • LibVLCSharp.WinForms
  • VideoLAN.LibVLC.Windows

现在我想将类 MyPlayer 移动到一个单独的 .NET Standard 类库,Project B,以将功能与 UI 分开,以便它可以被使用多个其他项目针对不同的平台。为了编译 B,我只需要添加 LibVLCSharp Nuget 包。然后我将 B 设置为 A 的引用。

显然,项目 A 将以某种方式需要其他两个 Nuget 包,但我不确定将它们添加到哪个项目最合适。在这种情况下什么最有意义?还是真的只有一种方法可行?

最佳答案

这是个好问题,我不知道 LibVLCSharp 上是否正确记录了它。

简答:

  • 必须始终在可执行项目 (A) 上引用 LibVLC
  • WinForms 与 .net 标准不兼容,因此如果您继续使用 netstandard,则无法在 B 中引用它。
  • 如果需要,可以将 LibVLCSharp 在项目 B 中“向上”移动。

长答案:

让我们详细看看包:

  • VideoLAN.LibVLC.Windows:此包包含使 libvlc 在 Windows 上运行所需的 dll 文件。它还包含用于将 DLL 复制到项目输出目录的 msbuild 文件。您的应用程序中需要这些文件,因此您需要在 A 中引用此包。 (它们不会被项目引用传递复制)

  • LibVLCSharp.WinForms:如前所述here ,本包仅支持.NET framework 4.0及以上,.net core 3.0及以上。您将无法在 B 中添加此包,除非您替换 netstandard 约束并改用多目标。它仅适用于 WinForms 可用的情况。

  • LibVLCSharp 可以毫无问题地在项目 B 中引用。由于您使用的是 .net 标准,因此您可能也在使用“SDK 样式”csproj 格式和 PackageReference。然后,该依赖项将在项目 A 中传递可用,而无需将其添加到那里。

如果您的观点是在 .net framework 和 .net core 中都有一个播放器表单,我建议您使用多目标,将其放入您的 B 项目中:

<TargetFrameworks>net40;netcoreapp3.0</TargetFrameworks>

否则,如果只是为了分享非ui代码,则不需要B中的LibVLCSharp.WinForms依赖

关于c# - LibVLC 依赖项应该添加到哪个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61480325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com