2012-08-01 49 views
2
Collection of C# class source code file, with Microsoft.Csharp.CSharpCodeProvider.CompileAssemblyFromFile(parameters,ClassFiles) we can create an assembly dll file. 

     public static string[] sourcefiles = new string[]{ 
        @"D:\pro1bk\projects\WCFService.cs" ,   
        @"D:\pro1bk\projects\Calculator.cs"    
           }; 

public Assembly Compile() 
    { 
     CSharpCodeProvider provider; 
     CompilerParameters parameters; 
     CompilerResults results; 

     parameters = new System.CodeDom.Compiler.CompilerParameters(); 

     AddAssemblyReference(
      typeof(System.Runtime.Serialization.DataContractAttribute).Assembly, 
      parameters.ReferencedAssemblies); 

     AddAssemblyReference(typeof(System.Xml.XmlElement).Assembly, 
      parameters.ReferencedAssemblies); 

       ........ 

       ........ 
     parameters.GenerateInMemory = true; 
     parameters.GenerateExecutable = false; 
     parameters.OutputAssembly = @"D:\pro1bk\ServiceCal.dll"; 
     parameters.TreatWarningsAsErrors = false; 
     parameters.WarningLevel = 4; 
     parameters.TempFiles.KeepFiles = false; 

     if (TargetFramework == TargetFramework.Silverlight) 
     { 
      parameters.CompilerOptions = " /nostdlib "; 

     } 

     parameters.ReferencedAssemblies.AddRange(DefaultReferencedAssemblies); 
     //parameters.MainClass = "App"; 
     try 
     { 
      provider = new CSharpCodeProvider(); 
      results = provider.CompileAssemblyFromFile(parameters, sourcefiles); 
      results.PathToAssembly = ""; 
      List<ErrorInfo> errors = new List<ErrorInfo>(results.Errors.Count); 

      ...... 

      ...... 

      } 

} 

上面的代碼用於創建dll文件。可能爲現有的dll添加新類並將其更新到源文件

我剛剛將該DLL(例如ClientProx.dll)複製到另一個項目。現在,我創建了一個帶有方法的新類,以及如何使用舊類將此新創建的類添加到現有DLL(例如ClientProx.dll)。

並在該DLL(例如ClientProx.dll)中添加新類後,該類應在適當文件中更新爲新類。

運行時我們該如何做到這一點?是否有可能在現有的DLL中添加新類並將其更新到適當的文件位置? 任何解決方案?

回答

0

更新程序集將是危險,不推薦!

相反,

1>存儲在Isolatedstorage或你想要的文件夾中的新編譯的類[DLL]!

2>製作一個訂閱AssemblyResolve事件的方法。此方法現在應該返回IsolatedStorage或該文件夾中的應用程序所要求的未解析的dll。

相關問題