我正在构建一个具有插件架构的应用程序,因此源可以包含许多不同的插件(但在同一文件夹中订购),如下所示:
src
- Dockerfile
- mainProject
- mainProject.csproj
- program.cs
- plugins
- plugin1
- plugin1.csproj
- plugin1.cs
- plugin2
- plugin2.csproj
- plugin2.cs
mainProject
不会引用插件项目,因此在 Dockerfile
中运行以下命令会将主项目发布到 /app/publish
并且不会包含插件:
WORKDIR /src
COPY . .
RUN dotnet publish "mainProject/mainProject.csproj" -c Release -o /app/publish
现在我想将每个插件发布到
/app/publish/plugins
,以便将plugin1
发布到/app/publish/plugins/plugin1
,与plugin2
类似。
为了减少维护需求,我不想每次创建新插件时都更新 Dockerfile,所以我想自动执行此操作。
我对shell脚本不是很熟悉。我所拥有的是以下内容,它打印了正确的命令,但我不知道如何正确执行它,或者是否有更好的方法。
find . -type f -name '*.csproj' -printf "dotnet publish %p -c Release -o /app/publish/plugins/%h\n"
如何自动构建子文件夹中的所有
.csproj
文件,并将它们从 Dockerfile
发布到自己的文件夹中
我想 find -exec 应该可以解决问题
find ./plugins/ -type f -name '*.csproj' -exec dotnet publish {} -c Release -o /app/publish/plugins \;
希望有帮助!