我在VS2013中有一个解决方案,该解决方案有2个项目,projA和projB。
在projA,启动项目中,我编写了一些代码来在运行时编译C#文本文件,并且我的代码实际上在将其链接到运行它的projA中的命名空间时效果很好。
但是当我尝试将它链接到projB中的命名空间时,例如做using namespaceInProjB
这样的事情,它说它们不存在。我以为它们也可以在当前域组件中找到?
有谁知道如何包含它们?这是我的代码:
CodeDomProvider provider = new CSharpCodeProvider();
CompilerParameters compilerParams = new CompilerParameters();
compilerParams.CompilerOptions = "/target:library";
compilerParams.GenerateExecutable = false;
compilerParams.GenerateInMemory = true;
compilerParams.IncludeDebugInformation = false;
compilerParams.ReferencedAssemblies.Add("mscorlib.dll");
var assemblies = AppDomain.CurrentDomain
.GetAssemblies()
.Where(a => !a.IsDynamic)
.Select(a => a.Location);
foreach (string str in assemblies.ToArray<string>())
compilerParams.ReferencedAssemblies.Add(str);
CompilerResults result = provider.CompileAssemblyFromSource(compilerParams, scriptCode);
// Write out all the errors
if (result.Errors.Count > 0)
{
errors = result.Errors;
return null;
}
return result.CompiledAssembly;
答案 0 :(得分:0)
确保您在projB
中使用的课程为public
,因为默认课程为internal
,您不能在projA
中的其他项目中使用它们