CodeDom ссылается на System.Management - PullRequest
0 голосов
/ 26 апреля 2018

Независимо от того, что я пытаюсь, я не могу сослаться на 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)

Среди других методов, таких как неявное использование и импорт в верхней частикласс

1 Ответ

0 голосов
/ 31 мая 2018

Я нашел, что он работает, используя оба ...

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.dll требуется System.Management.dll

Фрагмент кода, который я использовал, был:

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 #.

...