在C#编码编译器参数中添加DLL的汇编中的错误
-
10-10-2019 - |
题
我正在研究AC#编码项目,该项目为用户提供动态编译C#代码。添加WPF的汇编DLL时,我会遇到错误(对于Winforms来说很好)。这是“在汇编中找不到####。但是,当我通过其DLL路径添加引用时,例如“ C: Program Files Reference Assemblies Microsoft Framework fracework v3.0 System.printing.dll”,则说“ file c: program files reference”汇编 Microsoft framework v3.0 system.printing.dll找不到”,但是当我将System.Printing.dll放置到应用程序可执行文件夹时,它可以正常工作。
以下是我用来将参考添加到编译器选项的代码:
CompilerParameters oParameters;
:
:
:
string lcAssemblyDll="C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\System.Printing.dll";
oParameters.ReferencedAssemblies.Add(lcAssemblyDll);
我无法理解这个问题。还有其他方法可以添加WPF组件吗?
谢谢
解决方案
好吧,我无法在头顶上提供彻底的答案,但是首先,您需要意识到汇编参考与能够在申请执行过程中解决程序集并不相同。因此,如果在申请执行过程中给出了错误,我可以想象它会抛出打字机异常。
其次,您可能会得到“在汇编中找不到####。您是否缺少一些参考”,因为您依赖于居住在system.windows.media所引用的汇编的类的基本类型。
您可以尝试求解此在汇编过程中加载的汇编的添加引用。反射套件您要引用的组件。如果将事件处理程序添加到appDomain.currentdomain.reflectiononlysemblysolve中,则可以添加代码,以确保可以加载这些组件,然后只需将引用添加到codecompileunit。
不过,我已经遇到了一个问题,那就是在编译过程中进行了一些参考,因此我实施了一个令人讨厌的黑客,该黑客简单地将容器类添加到CodeCompileUnit中,该类别初始化了每个组件中第一个可构造的类型。
希望那些对你有帮助。