2012-01-06 3 views
2

Visual Studio에서 "참조"> "참조 추가"를 클릭하고 내 컴퓨터에서 기존 .dll 파일을 찾아 볼 수 있습니다.CodeDom 기존 파일에 대한 참조 추가

dllNameSpace.dllClassName myReference = new dllNameSpace.dllClassName(); 
myReference.someVoid(); 

가 나는 어셈블리를 사용하여 참조 된 CodeDom을 추가 (아래이 표시됩니다) 방법을 알고 있지만,이 경우와 같이 실제 DLL 파일이 프로젝트에 추가되지 않고 다음과 같이 나는 다음 참조 된 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을 추가하도록하기 위해 뭔가를 다른을 수행해야합니다 있으리라 믿고있어. 여기서 더해야 할 일이 무엇입니까?

도움을 주신 모든 분들께 감사드립니다.

+0

Visual Studio에서 잘 작동합니다. Codedom을 사용하여 동일한 효과를 얻으려고합니다. –

+0

일단 당신이 그것을 사용하면 호출해야합니다 컴파일 함수 또는 메서드가 있습니까? 나는 CompilerParameters가 4 오버로드를 가지고 당신이 옳은 일을하고 있는지 알고 ..하지만 당신은 실제로 DLL을 만드는거야? referenceAssemblies 문자열 배열을 통해 cp에 추가하는 것처럼 보입니다.이 MSDN 사이트는 서버를 @Manas 훌륭한 예제 외에도 참조로 사용하도록 도와줍니다 http://msdn.microsoft.com/en-us/library/system.codedom.compiler .compilerparameters.aspx – MethodMan

+0

내 CodeDom 코드를 실행하기 전에 dll 파일이 이미 있습니다. –

답변

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"}); 
+0

예,로드 및 호출하는 방법을 이해합니다. 그러나이 작업을 원하지는 않습니다. Visual Studio에서 dll을 간단히 참조하고 호출 할 수 있습니다. CodeDom을 사용하여 동일한 기능을 사용할 수없는 이유는 무엇입니까? –

관련 문제