windows .NET Core -为什么使用dotnet publish时输出文件夹结构不一致?

s5a0g9ez  于 2023-11-21  发布在  Windows
关注(0)|答案(1)|浏览(253)

我使用以下命令将我的net core web API发布到名为“release”的文件夹中。
使用dotnet publish -o release会产生一个release, runtimes and wwwroot文件夹,后面跟着.exe文件和dll:s。这个命令产生的文件夹结构可以上传到我的服务器上,API也会按预期工作。
dotnet publish -c Release -o release --self-contained true -r win-x86不生成这三个文件夹,而只生成.exe文件和dll:s。在这种情况下,当文件夹结构上传到我的服务器时,API无法按预期工作,似乎无法找到dotnet运行时。
这两种情况有什么区别?我希望后一种发布的文件夹结构能像第一种一样工作,只是没有发布多余的额外运行时。
我用的是dotnet版本:6.0.411

yfwxisqw

yfwxisqw1#

因为字符的限制,所以在这里省略。

  • runtimes文件夹不应该显示,因为您已经在命令(win-x86)中指定了运行时。
  • 我很确定release文件夹不应该在那里,你只能在常规发布中看到它,因为你之前用-o release运行了另一个命令,前者只是复制了它。试着从项目目录中删除它,然后再次调用常规发布命令,让我们看看会发生什么,但很可能这不是你的问题。我会将它发布到另一个目录,或者在projectct目录之外,或者在bin/目录之内。
  • 很可能你的问题"只“与wwwroot文件夹没有被复制有关。但是,我无法在.NET 8或.NET 6中重现这一点(6.0.411)通过使用dotnet new webapp -n TestOutput创建一个web应用程序,然后使用这两个命令发布它。我建议复制你的.csproj和你的解决方案的Directory.Build.props文件(如果你有一个)在这里,如果这有助于我们识别任何奇怪的影响行为的自包含应用程序。

相关问题