首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >类型“组件”是在未引用的程序集中定义的。必须添加对程序集'System.ComponentModel.Primitives‘的引用

类型“组件”是在未引用的程序集中定义的。必须添加对程序集'System.ComponentModel.Primitives‘的引用
EN

Stack Overflow用户
提问于 2022-08-18 11:53:30
回答 2查看 162关注 0票数 0

我在我的Microsoft.CodeAnalysis.CSharp核心项目中使用ASP.NET包。System.ComponentModel.Primitives包无法添加到我的包中。

这是我的代码:

代码语言:javascript
运行
复制
List<MetadataReference> references = new List<MetadataReference>();

references.Add(MetadataReference.CreateFromFile(typeof(object).Assembly.Location));
references.Add(MetadataReference.CreateFromFile(typeof(Enumerable).Assembly.Location));
references.Add(MetadataReference.CreateFromFile(Assembly.Load(new AssemblyName("System.Console")).Location));
references.Add(MetadataReference.CreateFromFile(Assembly.Load(new AssemblyName("System.Runtime")).Location));
references.Add(MetadataReference.CreateFromFile(Assembly.Load(new AssemblyName("System.Data.SqlClient")).Location));
references.Add(MetadataReference.CreateFromFile(Assembly.Load(new AssemblyName("System.Data")).Location));
references.Add(MetadataReference.CreateFromFile(Assembly.Load(new AssemblyName("System.Data.Common")).Location));
references.Add(MetadataReference.CreateFromFile(Assembly.Load(new AssemblyName("System.ComponentModel.DataAnnotations")).Location));


var code = @"
using System;
class Program {
    static void Main(string[] args) {
        Console.WriteLine(1);
    }
}
private DataTable ExecuteQuery(string query)
{
    {
        query = query.Replace(""'"", ""''"");

    DataTable dataTable = new DataTable();
        using (var con = new System.Data.SqlClient.SqlConnection(_connectionString))
        {
            {
                using var sqlCommand = con.CreateCommand();
                sqlCommand.CommandType = CommandType.Text;
                sqlCommand.CommandText = query;
                con.Open();

                System.Data.SqlClient.SqlDataAdapter sqlDataAdapter = new System.Data.SqlClient.SqlDataAdapter(sqlCommand);
                sqlDataAdapter.Fill(dataTable);
                con.Close();
            }
        }
        return dataTable;
    }
}
";

SyntaxTree syntaxTree = CSharpSyntaxTree.ParseText(code);
string assemblyName = Path.GetRandomFileName();
CSharpCompilation compilation = CSharpCompilation.Create(
   assemblyName,
   syntaxTrees: new[] { syntaxTree },
   references: references,
   options: new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary,
   usings: new[] {
                                "System",
                                "System.IO",
                                "System.Linq",
                                "System.Collections.Generic" })

    );


using (var ms = new MemoryStream())
{

    EmitResult result = compilation.Emit(ms);
    if (result.Success)
    {
        ms.Seek(0, SeekOrigin.Begin);
        Assembly assembly = Assembly.Load(ms.ToArray());
        Type type = assembly.GetType("RoslynCompileSample.MainClass");

        object obj = Activator.CreateInstance(type);
        var MethodOutput = type.InvokeMember("Main",
                BindingFlags.Default | BindingFlags.InvokeMethod,
                null,
                obj,
                null);

    }
}

以下是错误:

类型‘组件’是在未引用的程序集中定义的。必须添加对程序集'System.ComponentModel.Primitives,Version=6.0.0.0,Culture=neutral,Culture=neutral的引用

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-20 05:39:11

我无法安装System.ComponentModel.Primitives软件包。

但是在安装了以下软件包之后:

Microsoft.CodeAnalysis,Microsoft.CodeAnalysis Microsoft.CodeAnalysis.Common,Microsoft.CodeAnalysis.CSharp

System.ComponentModel.Primitives的安装是没有错误的。

我将以下代码添加到我的代码中:

代码语言:javascript
运行
复制
references.Add(MetadataReference.CreateFromFile(Assembly.Load(new AssemblyName("System.ComponentModel.Primitives")).Location));
票数 0
EN

Stack Overflow用户

发布于 2022-08-19 03:51:22

如错误所示,您需要添加System.ComponentModel.Primitives的引用

你可以试试:references.Add(MetadataReference.CreateFromFile(Assembly.Load(new AssemblyName("System.ComponentModel.Primitives")).Location));

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73402639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档