我在 vs 中的解决方案结构如下。
- MyRuleEngine框架
- 规则编辑器
MyRuleEngineFramework 是一个类库。RulesEditor 是一个 winforms 项目。后者引用了前者,但是,该程序集不会在编辑器项目中的任何地方使用。
只有几行代码我做了一种引用:
CSharpCodeProvider provider = new CSharpCodeProvider();
CompilerParameters cp = new CompilerParameters();
cp.ReferencedAssemblies.Add("System.dll");
cp.ReferencedAssemblies.Add("MyRuleEngineFramework.dll");
cp.OutputAssembly = "temp.dll";
cp.GenerateInMemory = false;
CompilerResults cr = provider.CompileAssemblyFromSource(cp, SourceCode);
上面的代码执行得很好,我第一次得到了编译好的程序集。
然后我将 MyRuleEngineFramework.dll 注册到 gac。
在此之后,生成的代码 ( SourceCode
) 没有编译。然后我删除了编辑器项目中对 dll 的引用(当程序集仍在 Gac 中时),它仍然没有编译。
现在为什么会发生这种情况?