BuildProvider: Можно ли указать имя сборки, которая будет сгенерирована? - PullRequest
0 голосов
/ 25 февраля 2011

Я создал собственного провайдера виртуального пути и поставщика сборки, и мне было интересно, можно ли как-то указать имя генерируемой сборки, вместо того, чтобы позволить asp.net придумать имя?

1 Ответ

0 голосов
/ 01 марта 2011

Чтобы ответить на мой собственный вопрос, это возможно с небольшой гимнастикой. Можно получить ссылку на CodeDomProvider из AssemblyBuilder, и оттуда вам решать, что вы хотите сделать. Как то так

 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);

        }
...