【问题标题】:Dotnet publish doesn't create folder when publishing web api发布 Web api 时,Dotnet publish 不创建文件夹
【发布时间】:2018-10-19 13:38:50
【问题描述】:

我一直在尝试遵循 multiple (example) 教程,了解如何将 asp.net Web API 放置到 docker 图像上。并且几乎所有这些都使用 docker 文件,在该文件中完成以下命令dotnet [csproj name] -c Release -o out,然后最终将信息从这里复制到另一个文件夹。但是,我一直遇到找不到文件夹的问题。所以我决定在本地使用这个命令,令我惊讶的是,没有生成任何 out 文件夹,也没有构建任何东西。

当我们查看it 上的dotnet publish 的文档时,我们可以看到它说以下内容:

将应用程序及其依赖项打包到一个文件夹中,以便部署到托管系统。

-o|--output <OUTPUT_DIRECTORY> 指定输出目录的路径。如果未指定,则默认为 ./bin/[configuration]/[framework]/publish/ 用于依赖于框架的部署或 ./bin/[configuration]/[framework]/[runtime]/publish/ 用于自包含部署。如果路径是相对的,则生成的输出目录是相对于项目文件位置的,而不是相对于当前工作目录的。

是的,我已经尝试了here 的几乎所有解决方案。

在我看来,这个命令应该创建一个新文件夹,所有已发布的文件都放入其中。所以我的问题是:我是不是弄错了,还是这里有问题,问题的解决方案是什么?

【问题讨论】:

  • 不知道。它应该创建一个文件夹:dotnet publish .\Proj.csproj --output o -c Release 创建一个名为“o”的目录。

标签: c# asp.net docker dotnet-cli


【解决方案1】:

是的,它会创建输出文件夹,但是在 .NET Core 3.0 工具之前,任何非绝对路径都将相对于项目目录进行解释。

所以在 3.0 之前,dotnet publish subdir(project.csproj -o otherdir 将创建一个 subdir/otherdir 目录。

另请注意,dotnet publish 将在其输出中打印它发布到的路径。

【讨论】:

  • 这并没有真正解决我的问题,我找到了另一种方法来完成我想做的事情(不使用 dotnet CLI)。不过还是谢谢你。
  • 与 3.0 之前的行为的差异也未记录在案,导致自动构建中的文件丢失,直到大量故障排除...
猜你喜欢
  • 2020-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 2021-07-21
  • 1970-01-01
  • 2018-07-02
相关资源
最近更新 更多