CodeDom如何添加对现有文件的引用?

4
在Visual Studio中,我可以点击“引用”>“添加引用”,并浏览计算机上现有的.dll文件。然后我可以按照以下方式使用已引用的dll:
dllNameSpace.dllClassName myReference = new dllNameSpace.dllClassName();
myReference.someVoid();

我知道如何使用CodeDom添加引用程序集(将在下面展示),但是实际的dll文件没有像在Visual Studio中操作时那样被添加到项目中。再次强调,我需要能够调用我想要引用的dll文件中的某些函数。

我现在正在做什么:

            // Configure a CompilerParameters that links the system.dll and produces the specified executable file.
            string[] referenceAssemblies = { 
                                            "System.dll", 
                                            "System.Drawing.dll", 
                                            "System.Windows.Forms.dll", 
                                            "System.Data.dll",
                                            "System.Xml.dll",
                                            "System.Management.dll",
Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\myDllFile.dll"
                                           };

            CompilerParameters cp = new CompilerParameters(referenceAssemblies, exeFile, false);

我假设我需要采取一些不同的措施,以便CodeDom将dll添加到输出可执行文件中。还需要做什么?

感谢大家的帮助!


这在Visual Studio中运行良好,我正在尝试使用Codedom获得相同的效果。 - user725913
有没有一个编译函数或方法,你必须调用一次才能使用它... 我知道 CompilerParameters 有 4 个重载,并且你所做的看起来是正确的... 但是什么时候你实际上创建了 dll?看起来像是你只是通过 referenceAssemblies 字符串数组将其添加到 cp 中。除了 @Manas 的出色示例之外,这个 MSDN 网站也会作为参考帮助:http://msdn.microsoft.com/en-us/library/system.codedom.compiler.compilerparameters.aspx - MethodMan
我的 CodeDom 代码运行之前,dll 文件已经存在。 - user725913
我用和你一样的方法做了,对我来说非常顺利,就像在IDE中添加一样,我能够使用dll文件中的函数!!! - Mousa Alfhaily
1个回答

0

以下代码可能会帮助您加载程序集并调用方法。

        Assembly asmbly = Assembly.LoadFile("assembly.test.dll");
        var myclass = asmbly.GetType("MyClass"); // use FullName i.e. Namespace.Classname
        var myobj = Activator.CreateInstance(myclass);
        myclass.GetMethod("MyMethod").Invoke(myobj,new object[]{"param1","param2"});

是的,我知道如何加载和调用 - 但我不想这样做。在Visual Studio中,我可以简单地引用一个dll并调用它。为什么我不能使用CodeDom具有相同的功能呢? - user725913

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接