Фабриковать
У меня есть проект MVC, в котором есть классы С#, которые в конечном итоге сериализуются и используются через ajax и т. д. Я использую TypeLite для создания определений этих классов C# (альтернативы TypeLite обсуждаются здесь), поэтому я могу получить время компиляции, проверяющее код, который использует эти сериализованные классы C# json. Таким образом, если определение C# изменится, а мой код TypeScript не изменится, я получу ошибку времени компиляции, потому что оно напрямую связано с определением C#.
Исходная проблема
В настоящее время мой TypeScript существует в том же проекте, что и мои классы C#. Итак, у меня очень странная проблема с циклической зависимостью. Чтобы решить эту проблему, я должен следовать очень конкретному шаблону
- Обновите класс C#
- Скомпилируйте проект MVC
- Запустите TypeLite, сгенерировав определения
- Обновите TypeScript или обнаружите ошибку компиляции при следующей сборке.
Мне это не нравится, потому что я не могу автоматически запускать TypeLite как часть процесса сборки. Я не могу этого сделать, поскольку TypeLite требует, чтобы сборка C# из проекта MVC была сначала собрана, чтобы запустить и получить доступ к определениям. Кроме того, я должен включать сгенерированные определения в репозиторий кода, что мне не нравится делать, поскольку сгенерированный код и кто-то может забыть его сгенерировать и зафиксировать/зафиксировать.
Предложенное решение
Я могу легко разорвать эту циклическую зависимость, если у меня есть проект TypeScript, который зависит от моего проекта MVC. Таким образом, я могу включить TypeLite в сборку, удалив его из проекта MVC и поместив в проект TypeScript.
Этот подход кажется мне очень правильным, поскольку проект TypeScript — это отдельный скомпилированный проект, который зависит от сборки, которая создается перед собственным проектом.
Актуальная проблема/вопрос
К сожалению, я не знаю, как создать проект TypeScript за пределами моего проекта MVC, который создает, а затем копирует сгенерированный JavaScript обратно в проект MVC (для развертывания через веб-развертывание и/или развертывание веб-ролей Azure). Итак, как мне получить проект TypeScript, отдельный от моего проекта MVC, который строится ПОСЛЕ проекта MVC, а затем копирует сгенерированный код JavaScript обратно в проект MVC для развертывания?