C# 编译器参数 - 找不到元数据

标签 c# assemblies

在尝试从 .txt 文件编译一些代码时(在运行时),我有一些代码引用了正在编译的代码的程序集。

几个月来它一直运行良好,但我最近不得不将 System.Speech.dll 添加为引用的程序集之一,现在当它尝试编译任何文本中的代码时出现错误文件。

这是错误:

找不到元数据文件“System.Speech.dll”

System.Speech.dll 也在项目的引用资料中,所以如果这可能是问题,那就不是。此外,所有其他引用的 dll 都完全正常,完全没有错误。

这是代码部分:(如果您需要更多,请评论)

        CompilerParameters options = new CompilerParameters();
        options.ReferencedAssemblies.Add("System.dll");
        options.ReferencedAssemblies.Add("System.Core.dll");
        options.ReferencedAssemblies.Add("System.Drawing.dll");
        options.ReferencedAssemblies.Add("System.Speech.dll");

我怎样才能消除这个错误?谢谢!

最佳答案

我能够重现您的错误并通过进行以下更改解决它:

CompilerParameters options = new CompilerParameters();
        options.ReferencedAssemblies.Add("System.dll");
        options.ReferencedAssemblies.Add("System.Core.dll");
        options.ReferencedAssemblies.Add("System.Drawing.dll");
        options.ReferencedAssemblies.Add(@"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\System.Speech.dll");

您当然需要将其更改为您的位置。

关于C# 编译器参数 - 找不到元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11505598/

相关文章:

c# - 从集合创建 HashSet<int> 的最坏情况复杂度

c# - 无法调用采用在不同程序集中定义的类型的参数的函数

.net - 'Any CPU'是如何实现的?

c# - 多个 Assembly.Load(Byte[]),相同的实例或泄漏?

.net - 在 .NET 中,有没有办法启用 Assembly.Load 跟踪?

.net - 在不锁定文件的情况下从程序集中加载和执行代码?

c# - 渲染和打印 HTML 到非默认打印机

c# - 方法声明的返回类型应该是接口(interface)还是具体类?

c# 如何在不操作 GetEnumerator 方法的情况下绕过这个问题?

c# - 以编程方式从 Entity Framework 6 的对象上下文中获取有关索引和约束的元数据