【问题标题】:how to play a sound from .NetStandard 2.0 class library?如何从 .NetStandard 2.0 类库中播放声音?
【发布时间】:2021-03-11 17:41:35
【问题描述】:

问题标题解释了问题。 This 答案在我看来是最好的选择,也是我想做的——播放 .wav 文件。但我无法添加命名空间以使用MediaElement。我想根据满足的条件播放哔声/警报声。

using Windows.Media.Playback;
using Windows.Media.Core;

是否有 .NetStandard2.0 类库替代方案?我想避免“第三方”,额外的 nuget 包。

【问题讨论】:

  • 我怀疑netstandard 有什么合适的,因为“播放声音”最终意味着“使用本机api与声音设备交互”。显然,netstandard 程序集无法实现此功能——它依赖于平台。 MediaElement 有什么问题?你的问题被标记为“UWP”,为什么不用呢?
  • 我的逻辑在我的netstandard 库中,而viewmodel 类(uwp)并不总是在满足条件时在内存中进行处理
  • 很明显他们可以使用适当的依赖于操作系统的包装器来实现功能,就像所有其他依赖于操作系统的功能已经实现一样(Process 也依赖于平台) .一个独立于平台的声音 API 恰好不是 .NET Standard 或 .NET Core 的一部分。最近的问题似乎是this
  • netstandard 程序集中声明某种ISoundService,并在UWP 程序集中实现它。在实现中使用您需要的任何平台相关功能。在运行时注入 ISoundService 的 UWP 实现。
  • 我会调查 NAudio 库:github.com/naudio/NAudio - 我相信它基本上根据实际安装的对象包装了许多不同的 API。

标签: c# uwp .net-standard


【解决方案1】:

您可以尝试在您的 .Net Standard 2.0 类库项目中使用 UWP API。右键单击您的类库名称并选择 Add -> Project Reference... 选项,单击 Reference Manager 对话框上的 Browse 按钮。找到文件C:\Program Files (x86)\Windows Kits\10\References\10.0.18362.0\Windows.Foundation.FoundationContract\3.0.0.0\Windows.Foundation.FoundationContract.winmd 并添加文件。找到文件C:\Program Files (x86)\Windows Kits\10\References\10.0.18362.0\Windows.Foundation.UniversalApiContract\8.0.0.0\ Windows.Foundation.UniversalApiContract.winmd并添加。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    相关资源
    最近更新 更多