vs の私のソリューション構造は次のとおりです。
- MyRuleEngineFramework
- ルールエディター
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 にある間)、コンパイルされませんでした。
なぜこれが起こるのですか?