【发布时间】:2025-11-29 20:30:02
【问题描述】:
我正在尝试创建一个单元测试,它将编译我从服务引用创建的接口。问题是当我使用ICodeCompiler编译接口时,它会抛出错误:
错误:找不到类型或命名空间名称“RoleAssignment”(您是否缺少 using 指令或程序集引用?)
RoleAssignment 类来自服务引用。有没有办法可以将ICodeCompiler 作为服务引用的参数添加到?
谢谢你
这是我的方法
CSharpCodeProvider codeProvider = new Microsoft.CSharp.CSharpCodeProvider();
ICodeCompiler compiler = codeProvider.CreateCompiler();
CompilerParameters parametersForInterface = new CompilerParameters();
parametersForInterface.GenerateInMemory = true;
parametersForInterface.ReferencedAssemblies.Add("System.dll");
parametersForInterface.ReferencedAssemblies.Add("System.Data.Services.Client.dll");
parametersForInterface.ReferencedAssemblies.Add("System.ComponentModel.dll");
parametersForInterface.OutputAssembly = "inMemoryAssembly.dll";
StringBuilder interfaceSC = new StringBuilder();
CompilerResults results = compiler.CompileAssemblyFromFile(parametersForInterface, path+ @"a\IA.cs");
StringWriter sw = new StringWriter();
// If there were errors, raise an exception...
foreach (CompilerError ce in results.Errors)
{
if (ce.IsWarning) continue;
sw.WriteLine("{0}({1},{2}: error {3}: {4}", ce.FileName, ce.Line, ce.Column, ce.ErrorNumber, ce.ErrorText);
}
// If there were errors, raise an exception...
string errorText = sw.ToString();
errorText 就是上面提到的错误。 我在我的单元测试中添加了一个服务引用,当我将 IA.cs 文件添加到我的项目中时,我没有收到任何错误。 IA.cs 是我从服务引用 reference.cs 生成的接口。 我不知道是否有办法将服务引用添加到 ICodeCompiler 谢谢
【问题讨论】:
-
您需要创建一个Minimal, Complete, and Verifiable example 来说明您要执行的操作。由此,人们可以告诉你你做错了什么。
-
所以您正试图通过已经引用
RoleAssignment的代码编译服务参考代码,这在尚未编译的代码中?也许试着解释你的问题,而不是你试图解决它的方式......为什么你需要用 ICodeCompiler 编译代码? -
我刚刚添加了有关我遇到的问题的更多信息。我希望现在更清楚了。
标签: c#