0

我创建了一个自定义虚拟路径提供程序和构建提供程序,并且想知道是否可以以某种方式指定生成的程序集的名称,而不是让 asp.net 提供一个名称?

4

1 回答 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 回答