NAudio 强名称问题

Posted

技术标签:

【中文标题】NAudio 强名称问题【英文标题】:NAudio Strong Name Issue 【发布时间】:2016-11-07 15:08:37 【问题描述】:

我正在使用 NAudio (1.7.3.0) 和 NAudio.lame (1.0.3.3048) 将 Wav 转换为 Mp3 音频格式。

我的代码(调用程序集)是强命名的,VS2015 抱怨 Naudio/NAudioLame dll 也应该被强命名,所以我确实用强名称唱了 Naudio dll。现在不幸的是,我正在构建错误

注意:我强烈命名了两个(Naudio)dll。

这里是代码。

try
            
 
                string filePath = @"D:\Lame\Wav\25mb.wav";
                string outputPath = @"D:\Lame\mp3\25mb.mp3";

                using (WaveFileReader wavReader = new WaveFileReader(filePath))
                using (WaveStream pcm = WaveFormatConversionStream.CreatePcmStream(wavReader))
                using (LameMP3FileWriter fileWriter = new LameMP3FileWriter(outputPath, pcm.WaveFormat, LAMEPreset.VBR_90))
                
                    pcm.CopyTo(fileWriter);
                

                MessageBox.Show("Converted !");
            
            catch (Exception ex)
            
 
                MessageBox.Show(ex.Message);
            

构建错误:LameMP3FileWriter(outputPath, pcm.WaveFormat, LAMEPreset.VBR_90)

错误:“WaveFormat”类型是在未引用的程序集中定义的。您必须添加对程序集 'NAudio, Version=1.7.3.0, Culture=neutral, PublicKeyToken=null 的引用。

感谢您的帮助!

【问题讨论】:

如果调用程序集和 NAudio 不是强命名的,则相同的代码可以成功运行。 【参考方案1】:

您需要先构建强命名的 NAudio,然后在构建 NAudio.Lame 时,确保它引用了您的强命名的 NAudio dll

【讨论】:

马克,我正在使用 Nuget 包,您的意思是下载代码并签署程序集吗? NAudio 和 Lame 下一个?

以上是关于NAudio 强名称问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 NAudio MMDevice 时,如何获取设备的品牌名称?

C# NAudio 如何强制/硬编码音频设备(声卡)?

枚举 NAudio 中的录音设备

NAudio 的问题

如何修复“引用的程序集没有强名称”错误

强名称 CSP 的 TFS 构建错误证书