我创建了一个自定义虚拟路径提供程序和构建提供程序,并且想知道是否可以以某种方式指定生成的程序集的名称,而不是让 asp.net 提供一个名称?
问问题
86 次
1 回答
0
要回答我自己的问题,只需很少的体操就可以了。可以从 AssemblyBuilder 中获取对 CodeDomProvider 的引用,然后由您决定要做什么。像这样的东西
public override void GenerateCode(AssemblyBuilder assemblyBuilder)
{
string outputName = VirtualPath.Substring(VirtualPath.LastIndexOf('/') + 1);
outputName = outputName.Substring(0, outputName.LastIndexOf('.'));
_compilationContext = (CompilationContext)HttpContext.Current.Items[outputName];
// var tw = assemblyBuilder.CreateCodeFile(this);
// tw.Write(_compilationContext.Content);
// tw.Flush();
// tw.Close();
//TODO: inject this
var factory = new DirectCompilerServiceFactory();
var compilerService = factory.CreateCompilerService(assemblyBuilder.CodeDomProvider);
compilerService.CompileAssembly(_compilationContext);
}
于 2011-03-01T19:15:48.490 回答