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

StackOverflow https://stackoverflow.com/questions/443027

  •  22-07-2019
  •  | 
  •  

Вопрос

Я генерирую код динамически, в настоящее время использую String.Format и встраиваю заполнители, но переформатирование кода C# для использования в качестве шаблона — это боль, и я думаю, что лучше использовать шаблон T4.

Однако генерация кода будет происходить в работающей системе, поэтому мне нужно знать, что я могу безопасно и легально распространять Microsoft T4 Engine вместе с моим продуктом.

Кто-нибудь еще сделал это?Или знаете (юридический) ответ?

Это было полезно?

Решение

Похоже, скоро может быть другой вариант.

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

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

Другие советы

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

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

Для ясности официальный ответ заключается в том, что вы не можете распространять движок Microsoft T4 как отдельную часть Visual Studio.

Однако, начиная с Visual Studio 2010, вы можете использовать и распространять предварительно скомпилированные шаблоны, которые не зависят от Visual Studio.

Вы также можете использовать T4 вне Visual Studio на компьютере, на котором установлена ​​Visual Studio.

Вы также можете бесплатно лицензировать и распространять изолированную оболочку Visual Studio и использовать ее в качестве хоста для своих инструментов — она включает T4.

Начиная с Visual Studio 2010 SP1, вы имеете лицензию на копирование T4 на свою машину сборки с помощью лицензии в buildserver.txt в каталоге установки VS.

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

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

Код для использования моего движка шаблонов: здесь , вы можете перейти к нему с помощью веб-браузера или указать Subversion Клиент на это. Обратите внимание, что ссылка, начинающаяся здесь, действительно останавливается после слова, но средство рендеринга ОМУ на стороне сервера пропускает ссылку на следующий текст.

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

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

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

Как правило, чтобы использовать шаблон:

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

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

Итак, чтобы просто вывести содержимое переданного параметра:

<%= data %>

Чтобы повторить это:

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top