Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 可以将新类添加到现有dll并将其更新到源文件 C类源代码文件的集合,使用Microsoft.Csharp.CSharpCodeProvider.CompileAsemblyFromFile(参数,类文件)我们可以创建一个程序集dll文件。 公共静态字符串[]源文件=新字符串[]{ @“D:\pro1bk\projects\WCFService.cs”, @“D:\pro1bk\projects\Calculator.cs” }; 公众集会 { CSharpCodeProvider; 编译器参数参数; 编译结果; parameters=new System.CodeDom.Compiler.CompilerParameters(); AddAssemblyReference( typeof(System.Runtime.Serialization.DataContractAttribute).Assembly, 参数(参考组件); AddAssemblyReference(typeof(System.Xml.xmlement).Assembly, 参数(参考组件); ........ ........ parameters.GenerateInMemory=true; parameters.GenerateExecutable=false; parameters.OutputAssembly=@“D:\pro1bk\ServiceCal.dll”; parameters.TreatWarningsAsErrors=false; 参数.WarningLevel=4; parameters.TempFiles.KeepFiles=false; if(TargetFramework==TargetFramework.Silverlight) { parameters.CompilerOptions=“/nostlib”; } parameters.ReferencedAssemblys.AddRange(DefaultReferencedAssemblys); //parameters.MainClass=“App”; 尝试 { provider=新的CSharpCodeProvider(); 结果=provider.CompileAssemblyFromFile(参数、源文件); results.PathToAssembly=“”; 列表错误=新列表(results.errors.Count); ...... ...... } }_C#_.net - Fatal编程技术网

C# 可以将新类添加到现有dll并将其更新到源文件 C类源代码文件的集合,使用Microsoft.Csharp.CSharpCodeProvider.CompileAsemblyFromFile(参数,类文件)我们可以创建一个程序集dll文件。 公共静态字符串[]源文件=新字符串[]{ @“D:\pro1bk\projects\WCFService.cs”, @“D:\pro1bk\projects\Calculator.cs” }; 公众集会 { CSharpCodeProvider; 编译器参数参数; 编译结果; parameters=new System.CodeDom.Compiler.CompilerParameters(); AddAssemblyReference( typeof(System.Runtime.Serialization.DataContractAttribute).Assembly, 参数(参考组件); AddAssemblyReference(typeof(System.Xml.xmlement).Assembly, 参数(参考组件); ........ ........ parameters.GenerateInMemory=true; parameters.GenerateExecutable=false; parameters.OutputAssembly=@“D:\pro1bk\ServiceCal.dll”; parameters.TreatWarningsAsErrors=false; 参数.WarningLevel=4; parameters.TempFiles.KeepFiles=false; if(TargetFramework==TargetFramework.Silverlight) { parameters.CompilerOptions=“/nostlib”; } parameters.ReferencedAssemblys.AddRange(DefaultReferencedAssemblys); //parameters.MainClass=“App”; 尝试 { provider=新的CSharpCodeProvider(); 结果=provider.CompileAssemblyFromFile(参数、源文件); results.PathToAssembly=“”; 列表错误=新列表(results.errors.Count); ...... ...... } }

C# 可以将新类添加到现有dll并将其更新到源文件 C类源代码文件的集合,使用Microsoft.Csharp.CSharpCodeProvider.CompileAsemblyFromFile(参数,类文件)我们可以创建一个程序集dll文件。 公共静态字符串[]源文件=新字符串[]{ @“D:\pro1bk\projects\WCFService.cs”, @“D:\pro1bk\projects\Calculator.cs” }; 公众集会 { CSharpCodeProvider; 编译器参数参数; 编译结果; parameters=new System.CodeDom.Compiler.CompilerParameters(); AddAssemblyReference( typeof(System.Runtime.Serialization.DataContractAttribute).Assembly, 参数(参考组件); AddAssemblyReference(typeof(System.Xml.xmlement).Assembly, 参数(参考组件); ........ ........ parameters.GenerateInMemory=true; parameters.GenerateExecutable=false; parameters.OutputAssembly=@“D:\pro1bk\ServiceCal.dll”; parameters.TreatWarningsAsErrors=false; 参数.WarningLevel=4; parameters.TempFiles.KeepFiles=false; if(TargetFramework==TargetFramework.Silverlight) { parameters.CompilerOptions=“/nostlib”; } parameters.ReferencedAssemblys.AddRange(DefaultReferencedAssemblys); //parameters.MainClass=“App”; 尝试 { provider=新的CSharpCodeProvider(); 结果=provider.CompileAssemblyFromFile(参数、源文件); results.PathToAssembly=“”; 列表错误=新列表(results.errors.Count); ...... ...... } },c#,.net,C#,.net,以上代码用于创建dll文件 我刚刚将该DLL(例如ClientProx.DLL)复制到另一个项目中。现在,我创建了一个带有方法的新类,以及如何使用旧类将这个新创建的类添加到现有的DLL(例如ClientProx.DLL) 在该DLL中添加新类(例如ClientProx.DLL)后,该类应在相应的文件中更新为新类 我们如何在运行时做到这一点?是否可以在现有DLL中添加新类并将其更新到正确的文件位置? 此问题的任何解决方案?更新组件将是危险的,不建议使用 相反 1> 将新编译的类[dll]存储在Is

以上代码用于创建dll文件

我刚刚将该DLL(例如ClientProx.DLL)复制到另一个项目中。现在,我创建了一个带有方法的新类,以及如何使用旧类将这个新创建的类添加到现有的DLL(例如ClientProx.DLL)

在该DLL中添加新类(例如ClientProx.DLL)后,该类应在相应的文件中更新为新类

我们如何在运行时做到这一点?是否可以在现有DLL中添加新类并将其更新到正确的文件位置?
此问题的任何解决方案?

更新组件将是危险的,不建议使用

相反

1> 将新编译的类[dll]存储在
Isolatedstorage
或所需的文件夹中


2> 创建订阅
AssemblyResolve
事件的方法。此方法现在应返回应用程序从
IsolatedStorage
或文件夹中所需的未解析dll。

更新程序集将是危险的,不推荐使用

相反

1> 将新编译的类[dll]存储在
Isolatedstorage
或所需的文件夹中

2> 创建订阅
AssemblyResolve
事件的方法。此方法现在应返回应用程序从
IsolatedStorage
或文件夹中所需的未解析dll

  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);

             ......

             ......

          }

}