首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >引用System.Management的CodeDom

引用System.Management的CodeDom
EN

Stack Overflow用户
提问于 2018-04-26 09:21:45
回答 1查看 116关注 0票数 0

无论我怎么尝试,我都无法在我的codedom项目中引用System.Management,我已经尝试过了

代码语言:javascript
复制
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)

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

EN

回答 1

Stack Overflow用户

发布于 2018-05-31 20:12:09

我发现使用这两种方法都能起作用。

代码语言:javascript
复制
var compileUnit = new CodeCompileUnit();
compileUnit.ReferencedAssemblies.Add("System.dll");
compileUnit.ReferencedAssemblies.Add("System.Management.dll");

...and...

代码语言:javascript
复制
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

我使用的代码片段是:

代码语言:javascript
复制
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);

我用以下命令编译它:

代码语言:javascript
复制
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#写的。

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

https://stackoverflow.com/questions/50033467

复制
相关文章

相似问题

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