如何为包含T4文件的.net核心项目构建持续集成

问题描述 投票:0回答:1

我想构建一个docker容器,我可以用它来进行持续集成。在其中,我想构建一个需要node,.net core和.net核心项目T4转换的应用程序。如何转换需要外部装配的T4文件,例如Linux Docker容器中的System.Data.DataSetExtensions?

我尝试了单声道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}"

有没有办法在Linux Docker容器中转换具有程序集依赖性的T4文件?你会切换到不同的转型引擎吗?或者是使用Windows docker容器的唯一选择?

docker .net-core continuous-integration t4
1个回答
0
投票

问题是单声道t4库中的一个错误,并在版本2.0.4中得到修复。有关更多信息,请查看GitHub问题:https://github.com/mono/t4/issues/46

© www.soinside.com 2019 - 2024. All rights reserved.