Делай, как говорит ошибка, и превращай свой string
в bytes
объект
def create_xml():
xml = b'''<?xml version="1.0" encoding="UTF-8"?>
<zAppointments>
</zAppointments>
'''
T4 не CodeSmith. Да, вы указываете параметры в файле .tt в форме кода C # или Visual Basic и используете директиву <# @ include #> для ссылки на фактическую реализацию логики генерации кода. Это не более жесткое кодирование, чем указание той же информации в файле XML с помощью CodeSmith.
Для набора шаблонов T4, подобных NetTiers, ознакомьтесь с архитектурой S # arp: http://code.google.com/p/sharp-architecture/ .
# @ include #> для ссылки на фактическую реализацию логики генерации кода. Это не более жесткое кодирование, чем указание той же информации в файле XML с помощью CodeSmith.Для набора шаблонов T4, подобных NetTiers, ознакомьтесь с архитектурой S # arp: http://code.google.com/p/sharp-architecture/ .
# @ include #> для ссылки на фактическую реализацию логики генерации кода. Это не более жесткое кодирование, чем указание той же информации в файле XML с помощью CodeSmith.Для набора шаблонов T4, подобных NetTiers, ознакомьтесь с архитектурой S # arp: http://code.google.com/p/sharp-architecture/ .
Я немного попробовал T4 - эй, если он бесплатный и включен в VS2008, используйте его, верно?
Моя основная идея заключалась в создании набора шаблонов для чтения базы данных table и создадим на его основе наши собственные ORM-классы.
Я отказался от T4, разочарованный и неспособный заставить работать даже самые простые вещи, которые в CodeSmith - кусок пирога.
Даже простая задача, такая как выбор сервера, базы данных и таблицы, не может быть сделано в T4 эффективно "вне" самого шаблона. Да, вы можете жестко закодировать все эти значения в виде строковых значений в шаблоне T4 - но давай, это действительно не решение, не так ли?
CodeSmith имеет отличную поддержку для выбора сервера, базы данных и таблиц, и вы можете установить их в качестве свойств в шаблоне и просто выбрать то, что вы хотите, и позволить шаблону делать все, что вам нужно, в этой конкретной таблице, которую вы выбрали.
Мой вывод: T4 многообещающий, но пока «не там». Он может работать для очень простых сценариев, но сейчас, на мой взгляд, он далеко не такой гибкий и мощный, как Codesmith.
Для такого сценария, как .netTiers, я пока что остановлюсь на Codesmith.
Марк
Если вы ищете реализацию T4 хорошо поддерживаемого DAL, который является открытым исходным кодом с интерфейсом Linq, а также собственным интерфейсом Fluent, который будет создавать оболочки для таблиц, хранимых процессов, представлений и т. Д. Тогда вам нужно попробовать SubSonic 3.0. SubSonic 2.2 обладает такими же достоинствами, за исключением T4 и интерфейса Linq, и находится в режиме выпуска. SubSonic 3.0 находится в альфа-версии, но вы можете загрузить код или .dll и шаблоны T4, если хотите.