我创建了一个自定义虚拟路径提供程序和构建提供程序,并想知道是否有可能以某种方式指定生成的程序集的名称,而不是让asp.net提出一个名称?
答案 0 :(得分: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);
}