如何为包含 T4 文件的 .net 核心项目构建持续集成
How to build a continuous integration for a .net core project which includes T4 files
我想构建一个 docker 容器,我可以将其用于我们的持续集成。其中,我想构建一个需要节点、.net 核心和 .net 核心项目 T4 转换的应用程序。
如何转换需要外部程序集的 T4 文件,例如System.Data.DataSetExtensions 在 Linux Docker 容器中?
我尝试了单声道 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" #>
至少它不再抱怨找不到程序集,但现在returns出现以下错误。
ERROR: The type or namespace name 'DataSet' could not be found (are you missing a using directive or an assembly reference?)
我正在使用以下 Docker文件
FROM microsoft/dotnet:sdk
RUN dotnet tool install -g dotnet-t4
ENV PATH="/root/.dotnet/tools:${PATH}"
有什么方法可以在 Linux Docker 容器中转换具有程序集依赖项的 T4 文件?
您会切换到不同的转换引擎吗?
或者是使用 windows docker 容器的唯一选择?
问题是 mono t4 库中的错误,已在 2.0.4 版中修复。
有关详细信息,请查看 GitHub 问题:https://github.com/mono/t4/issues/46
我想构建一个 docker 容器,我可以将其用于我们的持续集成。其中,我想构建一个需要节点、.net 核心和 .net 核心项目 T4 转换的应用程序。 如何转换需要外部程序集的 T4 文件,例如System.Data.DataSetExtensions 在 Linux Docker 容器中?
我尝试了单声道 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" #>
至少它不再抱怨找不到程序集,但现在returns出现以下错误。
ERROR: The type or namespace name 'DataSet' could not be found (are you missing a using directive or an assembly reference?)
我正在使用以下 Docker文件
FROM microsoft/dotnet:sdk
RUN dotnet tool install -g dotnet-t4
ENV PATH="/root/.dotnet/tools:${PATH}"
有什么方法可以在 Linux Docker 容器中转换具有程序集依赖项的 T4 文件? 您会切换到不同的转换引擎吗? 或者是使用 windows docker 容器的唯一选择?
问题是 mono t4 库中的错误,已在 2.0.4 版中修复。 有关详细信息,请查看 GitHub 问题:https://github.com/mono/t4/issues/46