【问题标题】:CodeDom referencing System.ManagementCodeDom 引用 System.Management
【发布时间】:2018-04-26 01:21:45
【问题描述】:

无论我尝试什么,我都无法将 System.Management 引用到我的 codedom 项目中,我已经尝试过

Dim assemblyReferences = New String() {"System.Drawing.dll",
                                                "System.Data.dll",
                                                    "System.Data.DataSetExtensions.dll",
                                                    "System.Deployment.dll",
                                                    "System.Management.dll",
                                                    "System.Net.dll",
                                                    "System.Net.Http.dll",
                                                    "System.dll",
                                                    "System.Core.dll",
                                                    "mscorlib.dll",
                                                    "System.Windows.Forms.dll",
                                                    "System.Xml.dll",
                                                    "System.Xml.Linq.dll"}
        param.ReferencedAssemblies.AddRange(assemblyReferences)

在其他方法中,例如隐式使用它并在类的顶部导入它

【问题讨论】:

    标签: vb.net compiler-construction codedom


    【解决方案1】:

    我发现它可以同时使用...

    var compileUnit = new CodeCompileUnit();
    compileUnit.ReferencedAssemblies.Add("System.dll");
    compileUnit.ReferencedAssemblies.Add("System.Management.dll");
    

    ...和...

    var parameters = new CompilerParameters(new string[] {"System.dll", "System.Management.dll" }, "TestAssembly.dll", true);
    var results = provider.CompileAssemblyFromDom(parameters, compileUnit);
    

    System.Management.dll 需要System.dll

    我使用的代码 sn-p 是:

    var compileUnit = new CodeCompileUnit();
    compileUnit.ReferencedAssemblies.Add("System.dll");
    compileUnit.ReferencedAssemblies.Add("System.Management.dll");
    var codeNamespace = new CodeNamespace("ClassLibrary1");
    compileUnit.Namespaces.Add(codeNamespace);
    var testClass = new CodeTypeDeclaration("TestClass");
    var declaration = new CodeMemberField(typeof(System.Management.ManagementClass), "managementClass");
    testClass.Members.Add(declaration);
    codeNamespace.Types.Add(testClass);
    

    我编译它:

    using (var provider = CodeDomProvider.CreateProvider("VisualBasic"))
    {
        var parameters = new CompilerParameters(new string[] {"System.dll", "System.Management.dll" }, "TestAssembly.dll", true);
        var results = provider.CompileAssemblyFromDom(parameters, compileUnit);
    
        return results;
    }
    

    对不起,示例是用 C# 编写的。

    【讨论】:

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