遵循所有.NET Core指南基本归结为dotnet publish
并将其输出复制到/app
,然后运行dotnet myapp.dll
。
我在此设置中运行了大约40多种(并且正在增长的)产品,因此使用myapp.dll
修改所有dockerfiles会非常费力。
我想知道是否有某种方法可以找出发布期间输入dll的内容? (例如,使用--self-contained
cli生成一个特定于arch的条目文件,因此您可以使用该名称,但考虑到发布需要更长时间,这似乎是一个不必要的步骤)
答案 0 :(得分:0)
您可以创建一个bash脚本来提取项目名称,然后创建一个有效的路径并将其替换为脚本文件。
如果你在解决方案文件夹中,只需运行:(bash)
PROJECT_NAME=`find ./ -name "*.sln" | head -n 1 | cut -d '/' -f 2 | sed 's/.sln//'`
如果您有解决方案文件 myapp.sln ,此命令将返回值 myapp
然后将此值传递给脚本:
./runScript.sh "$PROJECT_NAME"
在这个脚本里面:
dotnet "/app/$1.dll"
对于dockerfiles,您可以替换所有出现的例如。 {{PROJECT_NAME}} 在文件中变量值。现在我不记得命令,但 sed 对此很有用。