将.NET Core 3.1 Web应用部署到Azure Linux应用程序服务

3
我已经在Azure Devops中设置了发布,以将.NET Core 3.1应用程序部署到Azure中的Linux应用服务。这似乎将代码推送到Azure,但是路径非常奇怪: /wwwroot/Content/d_C/a/1/s/[MyProject]/obj/Release/netcoreapp3.1/PubTmp/Out/ 其中包含所有dll文件,然后是一个wwwroot目录,其中包含在我的Web项目中找到的所有文件和文件夹。
这是我的发布设置。有人知道为什么我的发布没有发布到/home/site/wwwroot/吗?其他人说这就是站点应该发布到的位置。我需要在Azure门户中设置什么还是这是Devops的问题?

请问下面的方法对您是否有效?它是否使您在Azure中实现了所需的路径?如果您仍有任何疑问,请在下面自由评论:-) - Mengdi Liang
我遇到了完全相同的问题。你是怎么解决的? - Mandar Jogalekar
1个回答

0

这个奇怪的路径应该与Azure应用服务部署任务或Azure门户的配置无关 (只需确保Azure门户中的物理路径值为site/wwwroot)

我猜你是使用Visual Studio构建任务来构建你的项目,对吧?因为如果我使用VSbuild任务来构建我的.net core应用程序,我会遇到类似的路径结构。如果是的话,别人告诉你的是正确的。如果在构建管道中使用Visual Studio构建任务,则这是默认操作。

其他人已经详细解释了这一点,并提供了相应的解决方案。您可以参考此#1以了解此默认操作的说明。并查看此#2以获取解决方法。

因此,我可以安全地假设您正在开发ASP.NET Core 3.0应用程序以在Ubuntu上托管。任何.NET Core 3.0(或更高版本)应用程序都意味着您应该依赖于dotnet build而不是使用VSBuild。
另外,您已经说明您将在Ubuntu 18.x上托管应用程序,那么您还应该在运行在Ubuntu上的Azure DevOps代理上运行构建。这意味着您只能在DotNetCoreCLI@2任务中使用dotnet build,因为VSBuild任务仅在基于Windows的代理上运行,而不是Ubuntu,并且旨在编译.NET Framework和其他平台,而不是.NET Core。
因此,为了实现您想要的目标,您需要使用dotnet build task来构建您的.net core 3.1项目。
- task: DotNetCoreCLI@2
  displayName: Build
  inputs:
    command: 'build'
    projects: PATH/TO/YOUR/Project.csproj
    arguments: --output $(System.DefaultWorkingDirectory)/publish_output --configuration Release

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接