Как построить непрерывную интеграцию для основного проекта .net, который включает файлы T4 - PullRequest
0 голосов
/ 29 марта 2019

Я хочу построить докер-контейнер, который я смогу использовать для нашей непрерывной интеграции.В рамках этого я хочу создать приложение, которому нужен узел, ядро ​​.net и трансформация T4 проекта ядра ядра .net.Как я могу преобразовать файлы T4, которые нуждаются во внешних сборках, например, System.Data.DataSetExtensions в контейнере Docker Linux?

Я попробовал двигатель mono t4 https://github.com/mono/t4. Я установил его в свой Docker-контейнер, и яв состоянии сделать простое преобразование T4.Но в наших файлах T4 мне нужны сборки.Например,

<#@ Assembly Name="System.Data" #>
<#@ Import Namespace="System.Data" #>
.... some code
DataSet dsProcedures = new DataSet();       
..... more code

Поэтому я использовал dotnet restore для установки всех наших зависимостей в контейнере Docker.Так что System.Data.DataSetExtensions предоставляется в виде пакета NuGet.

Поэтому я попытался использовать параметры командной строки dotnet-t4 для указания пути сборки.Это не помогло, поэтому я изменил сборку на

<#@ Assembly Name="/root/.nuget/packages/system.data.datasetextensions/4.5.0/lib/netstandard2.0/System.Data.DataSetExtensions.dll" #>

По крайней мере, он больше не жаловался, что не может найти сборку, но теперь возвращает следующую ошибку.

ОШИБКА: не удалось найти тип или имя пространства имен 'DataSet' (отсутствует директива using или ссылка на сборку?)

Я использую следующий файл Dockerfile

FROM microsoft/dotnet:sdk

RUN dotnet tool install -g dotnet-t4
ENV PATH="/root/.dotnet/tools:${PATH}"

Есть ли способ преобразовать файлы T4 с зависимостями сборки в контейнер Linux Docker?Вы бы переключились на другой механизм трансформации?Или единственный вариант использовать контейнер докера Windows?

1 Ответ

0 голосов
/ 23 апреля 2019

Проблема заключалась в ошибке в библиотеке mono t4, которая была исправлена ​​в версии 2.0.4. Для получения дополнительной информации проверьте выпуск GitHub: https://github.com/mono/t4/issues/46

...