Я хочу построить докер-контейнер, который я смогу использовать для нашей непрерывной интеграции.В рамках этого я хочу создать приложение, которому нужен узел, ядро .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?