Я могу перераспределить Microsoft T4 Engine со своим продуктом? [закрытый]

Самым большим источником недоразумений является то, что слово «пакет» сильно перегружено. В игре есть 4 разных имени - имя каталога, используемого для разработки (тот, который содержит setup.py), имя каталога, содержащего __init__.py и других импортируемых модулей, имя дистрибутива в PyPI и Название расширения. Довольно часто первые 3 одинаковы или похожи, но это не обязательно.

Имя каталога разработки может быть любым, его имя не играет никакой роли. Конечно, это правильно назвать, но это только удобство.

Имя каталога с файлами Python указывает на импортируемый пакет. Как только пакет назван для импорта, имя обычно застревает и не может быть изменено.

Название дистрибутива дает одну страницу в PyPI и имя дистрибутивных файлов (исходный дистрибутив, яйца, колёса). Это имя, которое вы называете в setup(name='distribution') вызове.

Расширения - это модули Python, поэтому имя расширения должно быть собственно именем модуля. Но имя, которое вы вводите в Extension(), должно быть полным путевым путём к модулю, включая имя пакета верхнего уровня. В вашем примере это

Extension(
  name = 'Abc.Xyz',
  sources = ['a.cpp', 'b.cpp']
)

Это производит расширение, которое может быть импортировано как

  import Abc.Xyz

или

  from Abc import Xyz

или

  from Abc.Xyz import 

[1131 ] Позвольте мне показать подробный реальный пример. Я поддерживаю библиотеку шаблонов под названием CheetahTemplate . Я разрабатываю его в каталоге разработки под названием cheetah3/. Распределение в PyPI называется Cheetah3 ; это имя я ввел в setup(name='Cheetah3') . Модуль верхнего уровня - Cheetah , следовательно, один делает import Cheetah.Template или from Cheetah import Template; это означает, что у меня есть каталог cheetah3/Cheetah/.

Библиотека имеет расширение _namemapper . Имя, используемое в Extension(), является Cheetah._namemapper .

6
задан casperOne 29 August 2012 в 15:49
поделиться

6 ответов

Похоже, что может скоро быть другая опция.

Вчера, Miguel de Icaza отправил об интеграции T4 в MonoDevelop, таким образом, я ожидаю там быть моно эквивалентным набором инструментов T4 любое время теперь.

См.: http://tirania.org/blog/archive/2009/Mar-10.html

5
ответ дан 8 December 2019 в 18:43
поделиться

Можно перераспределить T4 как часть DSLToolsRedist, однако, это требует Visual Studio стандартного выпуска 2005 года или выше быть уже установленным. Я не полагаю, что T4 может быть по закону перераспределен без Visual Studio в это время. Сценарий, который Вы описали, будет непосредственно поддерживаться в Visual Studio 2010

3
ответ дан 8 December 2019 в 18:43
поделиться

У меня есть ответ, и к сожалению это не как предложенный Oleg. (Большая работа над T4 путем Oleg). Вы не можете перераспределить T4 в это время - это - часть VS. В VS2010 будет возможно предварительно скомпилировать шаблоны T4 и затем перераспределить те предварительно скомпилированные шаблоны с Вашим приложением без зависимости T4 для выполнения их.

2
ответ дан 8 December 2019 в 18:43
поделиться

У меня есть своя собственная система генератора кода шаблона, компилируя код в отдельном appdomain, до VS2008 вышел.

Если Вы интересно, добавляете комментарий, и я отправлю URL на код.

Код для использования моего механизма шаблонной обработки здесь, можно просмотреть к нему с веб-браузером или указать на клиент Подверсии на него. Отметьте, ссылка, которая запускается со здесь действительно, останавливается после слова, но серверная сторона рендерер WMD пропускает ссылку на следующий текст.

Обратите внимание, что, если Вы просто копируете единственный файл в том пространстве имен, затем это не скомпилирует отдельно, требуется некоторый материал в LVK.Delegates и LVK.Scripting, пространствах имен несколько уровней из ссылки выше. Если Вы не захотите сосать вниз целую библиотеку, то необходимо будет извлечь части, на которые она жалуется по одному, пока она не компилирует.

Существует также версия двоичных файлов библиотеки в/LVK_3_5/trunk/Binaries/Debug/LVK в том же репозитории. При загрузке этого, это столь же просто как просто добавление ссылки на него и проверка класса LVK.Text. Шаблоны. TextTemplate.

К сожалению, у меня нет примеров для моей библиотеки в данный момент.

В основном, для использования шаблона:

TextTemplate tt = new TextTemplate();
tt.Source = "... code here, check example file above ...";
tt.Compile();
String output = tt.Generate(singleObjectParameter);

В шаблоне, который является в основном всем кодом, который введен в отдельном методе (что означает, что это не столь хорошо как T4 с точки зрения способности добавить методы легко, но можно использовать анонимные методы), у Вас будет доступ к объекту данных переданным в него в качестве параметра названный данными.

Таким образом просто производить содержание переданного параметра:

<%= data %>

Повторить его:

<% for (Int32 index = 0; index < 10; index++) { %>
<%= data %>
<% } %>

Если у Вас есть вопросы, отправьте их в мою электронную почту по lasse@vkarlsen.no.

1
ответ дан 8 December 2019 в 18:43
поделиться

Я вспомнил, что это подошло назад в 2006 (прежде чем я знал, каков T4 был!) и пошел, ища и нашел этот http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/1ab0bf3f-2810-4adf-bf75-900b98dee8e2/, К сожалению, связь gotdotnet разорвана. Хитрый для высказывания whethere в том потоке они соглашаются, что можно по закону разместить T4 outsid VS и перераспределить - или нет.

0
ответ дан 8 December 2019 в 18:43
поделиться

Это - реальный позор, но поскольку Oleg указывает, если это не тестируется затем, как можно выпустить его.

Lassevk, конечно, мне интересно - думал о перефразировании движка шаблонов, который я создаю приблизительно 10 лет назад, но я всегда для более легкой жизни!

0
ответ дан 8 December 2019 в 18:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: