LibVLC 依赖项应该添加到哪个项目?
To which Project should LibVLC dependencies be added?
我有一个 .NET Framework 项目 A
的解决方案,它构建了一个包含 class、MyPlayer
的 winforms 应用程序,这需要 LibVLCSharp .为了构建应用程序并 运行 正确,我必须添加以下 Nuget 包:
- LibVLCSharp
- LibVLCSharp.WinForms
- VideoLAN.LibVLC.Windows
现在我想将 class MyPlayer
移动到一个单独的 .NET Standard class 库,项目 B
,以将函数从 UI 中分离出来并且它可以被多个其他项目使用针对不同的平台。为了 B
编译我只需要添加 LibVLCSharp Nuget 包。然后我将 B
设置为 A
的参考。
显然,项目 A
将以某种方式需要其他两个 Nuget 包,但我不确定将它们添加到哪个项目最合适。在这种情况下什么最有意义?还是真的只有一种方法可行?
这是个好问题,我不知道 LibVLCSharp 上是否正确记录了它。
简答:
- 必须始终在可执行项目 (A) 上引用 LibVLC
- WinForms 与 .net 标准不兼容,因此如果您继续使用 netstandard,则无法在 B 中引用它。
- LibVLCSharp 可以移动 "up" 在项目 B 中,如果你需要的话。
长答案:
让我们详细看看包:
VideoLAN.LibVLC.Windows
:此软件包包含 required dll 文件,这些文件是 required 以使 libvlc 在 Windows 上工作。它还包含用于将 DLL 复制到项目输出目录的 msbuild 文件。您的应用程序中需要这些文件,因此您需要在 A
中引用此包。 (它们不会被项目引用传递复制)
LibVLCSharp.WinForms
: 如here所述,此包仅支持.NET framework 4.0及以上,以及.net core 3.0及以上。您将无法在 B
中添加此包,除非您替换 netstandard
约束并改用多目标。它只适用于 WinForms 可用的地方。
LibVLCSharp
可以在项目 B
中引用,没有任何问题。由于您使用的是 .net 标准,因此您可能也在使用 "SDK-style" csproj 格式和 PackageReference
。然后,该依赖项将在项目 A 中传递可用,而无需将其添加到那里。
如果你的意思是在 .net framework 和 .net core 中都有一个播放器表单,我建议你使用多目标,把它放在你的 B 项目中:
<TargetFrameworks>net40;netcoreapp3.0</TargetFrameworks>
否则,如果只是为了共享非ui代码,则不需要BLibVLCSharp.WinForms中的依赖
我有一个 .NET Framework 项目 A
的解决方案,它构建了一个包含 class、MyPlayer
的 winforms 应用程序,这需要 LibVLCSharp .为了构建应用程序并 运行 正确,我必须添加以下 Nuget 包:
- LibVLCSharp
- LibVLCSharp.WinForms
- VideoLAN.LibVLC.Windows
现在我想将 class MyPlayer
移动到一个单独的 .NET Standard class 库,项目 B
,以将函数从 UI 中分离出来并且它可以被多个其他项目使用针对不同的平台。为了 B
编译我只需要添加 LibVLCSharp Nuget 包。然后我将 B
设置为 A
的参考。
显然,项目 A
将以某种方式需要其他两个 Nuget 包,但我不确定将它们添加到哪个项目最合适。在这种情况下什么最有意义?还是真的只有一种方法可行?
这是个好问题,我不知道 LibVLCSharp 上是否正确记录了它。
简答:
- 必须始终在可执行项目 (A) 上引用 LibVLC
- WinForms 与 .net 标准不兼容,因此如果您继续使用 netstandard,则无法在 B 中引用它。
- LibVLCSharp 可以移动 "up" 在项目 B 中,如果你需要的话。
长答案:
让我们详细看看包:
VideoLAN.LibVLC.Windows
:此软件包包含 required dll 文件,这些文件是 required 以使 libvlc 在 Windows 上工作。它还包含用于将 DLL 复制到项目输出目录的 msbuild 文件。您的应用程序中需要这些文件,因此您需要在A
中引用此包。 (它们不会被项目引用传递复制)LibVLCSharp.WinForms
: 如here所述,此包仅支持.NET framework 4.0及以上,以及.net core 3.0及以上。您将无法在B
中添加此包,除非您替换netstandard
约束并改用多目标。它只适用于 WinForms 可用的地方。LibVLCSharp
可以在项目B
中引用,没有任何问题。由于您使用的是 .net 标准,因此您可能也在使用 "SDK-style" csproj 格式和PackageReference
。然后,该依赖项将在项目 A 中传递可用,而无需将其添加到那里。
如果你的意思是在 .net framework 和 .net core 中都有一个播放器表单,我建议你使用多目标,把它放在你的 B 项目中:
<TargetFrameworks>net40;netcoreapp3.0</TargetFrameworks>
否则,如果只是为了共享非ui代码,则不需要BLibVLCSharp.WinForms中的依赖