我如何在我的解决方案中将另一个项目(程序集)添加到CompilerParameters.ReferencedAssemblies集中?假设我在主项目中编译了如下所示的一串代码。但是我想在CustomClass中实现一个接口。当我执行publicclassCustomClass:InterfaceType时,该接口位于我的解决方案的另一个项目中(我的主项目中的部分引用),我收到这样的错误。我如何在动态代码中引用其他项目,以便我可以使用接口和其他类?c:UsersxxxAppDataLocalTempm8ed4ow-.0.cs(1,32:errorCS0246:找不到类型或命名空间名称“InterfaceType”(是否缺少using指令或程序集引用)?)stringcode2=“公共类CustomClass:InterfaceType”+“{”+“}”;//编译器和编译器参数CSharpCodeProvidercodeProvider=newCSharpCodeProvider();CompilerParameterscompParameters=newCompilerParameters();compParameters.GenerateInMemory=false;//默认//compParameters.TempFiles=newTempFileCollection(Environment.GetEnvironmentVariable("TEMP"),true);compParameters.IncludeDebugInformation=true;//compParameters.TempFiles.KeepFiles=true;compParameters.ReferencedAssemblies.Add("System.dll");CodeDomProvidercompiler=CSharpCodeProvider.CreateProvider("CSharp");//编译代码CompilerResultsres=codeProvider.CompileAssemblyFromSource(compParameters,code2);//检查编译器结果是否有错误StringWritersw=newStringWriter();foreach(Cores.Errors中的mpilerErrorce){如果(ce.IsWarning)继续;sw.WriteLine("{0}({1},{2}:错误{3}:{4}",ce.FileName,ce.Line,ce.Column,ce.ErrorNumber,ce.ErrorText);}stringerror=sw.ToString();sw.Close();//创建类'CustomClass'对象的新实例myClass=res.CompiledAssembly.CreateInstance("CustomClass");底线是您需要添加其他项目CompilerParameters.ReferencedAssemblies集合这可能很棘手,因为CodeDOM需要能够访问程序集,因此程序集需要在GAC中,或者您需要将程序集的完整路径添加到ReferencedAssemblies位置。一个简单的方法,如果你在实现CodeDOM编译器的项目中引用包含“InterfaceType”的项目,然后执行:compilerParameters.ReferencedAssemblies.Add(typeof(InterfaceType).Assembly.Location);...如果没有,您将不得不找出其他一些确保CodeDOM能找到你要引用的程序集的方法以上是C#学习教程:Howtoaddanotherproject(assembly)inmysolutiontoCompilerParameters.ReferencedAssembliescollection?所有分享的内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
