protected virtual void GenerateCode(CodeCompileUnit unit, CodeDomProvider provider, CodeGenerationResults content, string itemPath) { CodeCompileUnit cloneUnit = CloneUnit(unit); foreach (CodeNamespace ns in unit.Namespaces) { cloneUnit.Namespaces.Clear(); cloneUnit.Namespaces.Add(CloneNamespace(ns)); foreach (CodeTypeDeclaration codeType in ns.Types) { string file = Path.Combine(Path.GetDirectoryName(itemPath), Path.ChangeExtension(codeType.Name, Path.GetExtension(itemPath))); if (!content.ContainsFile(file)) { cloneUnit.Namespaces[0].Types.Clear(); cloneUnit.Namespaces[0].Types.Add(codeType); using (StringWriter stringWriter = new StringWriter(CultureInfo.InvariantCulture)) { provider.GenerateCodeFromCompileUnit(cloneUnit, stringWriter, new CodeGeneratorOptions()); content.Add(file, stringWriter.ToString()); } } } } }