.net core dotnet发布输出文件夹?

.net core dotnet发布输出文件夹?,.net-core,continuous-integration,gitlab-ci,.net Core,Continuous Integration,Gitlab Ci,dotnet publish命令发布到projectsbin/netcoreapp2.2/Debug/publish文件夹中。其中,netcoreapp2.2可能随dotnet版本而变化,而Debug则随-c参数指定的任何配置而变化 对于CI/CD而言,这显然是不可取的。或者,可以传递-o以传递显式输出路径,但在CI/CI环境中,此路径应位于项目文件夹结构内,例如: dotnet publish -o publish 但是,由于publish命令全局读取所有文件,因此它会拾取以前的发布尝试并递

dotnet publish
命令发布到projects
bin/netcoreapp2.2/Debug/publish
文件夹中。其中,
netcoreapp2.2
可能随dotnet版本而变化,而
Debug
则随
-c
参数指定的任何配置而变化

对于CI/CD而言,这显然是不可取的。或者,可以传递
-o
以传递显式输出路径,但在CI/CI环境中,此路径应位于项目文件夹结构内,例如:

dotnet publish -o publish
但是,由于publish命令全局读取所有文件,因此它会拾取以前的发布尝试并递归存储它们。这可以通过明确清理发布文件夹和/或向项目的csproj中添加一个来缓解,但现在构建脚本和csproj之间存在依赖关系:如果出于任何原因在构建脚本中更改了发布路径,而没有相应的csproj更新,则会中断

因此,最不脆弱的选择似乎是使用默认输出路径,因为它会自动从全局绑定中排除,但是如何消除版本和配置敏感性呢?是否有一种特别安全的方法让dotnet告诉我的CI/CD环境其生成/发布的输出路径是什么

小鬼:我没有足够的声誉来添加评论

参考:

您可以使用带有-o选项的相对路径,最终可能会使用运行时平台标识来避免文件夹名称

<> P>或>强>为什么不考虑使用发布命令< /强>使用Buffic命令,在这里可以指定显式路径。但通常相对路径不太容易出错


希望这对你有帮助

绝对路径不可用,因为生成运行程序服务器有多个运行程序,因此两个生成可能会尝试同时使用同一个“c:\publish”文件夹。相对路径是不受欢迎的,因为它们以递归方式全局化,虽然这是可以修复的,但我对不可见的依赖关系不满意,因为这违反了“最少意外”的原则。是否尝试发布配置文件:选项1:是否尝试发布配置文件:这可能会解决默认文件夹名称和相对路径的问题,您可以在其中指定绝对路径。但最终我们必须通过相对或绝对来指定路径。选项2:您可以使用CI/CD管道变量或环境变量存储绝对路径,并在命令中使用它们-似乎代码/项目不知道发布路径