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 (例: ClientProx.dll) を別のプロジェクトにコピーしました。これで、メソッドを含む新しいクラスが作成され、この新しく作成されたクラスを古いクラスを含む既存の DLL (例: ClientProx.dll) に追加する方法がわかりました。
そして、そのDLL(例:ClientProx.dll)に新しいクラスを追加した後、適切なファイルで新しいクラスとして更新する必要があります。
実行時にこれを行うにはどうすればよいでしょうか。既存の DLL に新しいクラスを追加して、適切なファイルの場所に更新することは可能ですか? これに対する解決策はありますか?