使用VSTS实现ASP.NET Core Web API的持续集成/持续交付

56

我使用Visual Studio 2017(社区版)创建了一个ASP.NET Core Web API应用程序。 我成功地使用Visual Studio发布到Azure App Service。

现在,我想使用VSTS设置CI/CD。 我使用Visual Studio中的“配置持续交付”选项,在VSTS中创建了一个项目并创建了构建定义。 为了避免Nuget还原错误,我不得不在VSTS中基于“ASP.NET Core”模板创建一个新的构建定义。 现在解决方案可以构建并运行测试,但是“发布”任务会出现警告-

##[warning]No web project was found in the repository. Web projects are identified by the presence of either a web.config file or wwwroot folder in the directory.

'发布工件'任务有一个类似的警告 -

##[warning]Directory 'd:\a\1\a' is empty. Nothing will be added to build artifact 'drop'.

显然,这个构建并没有产生任何工件。

我是否需要将任何构建任务添加到默认的ASP.NET Core构建模板中?如何使用VSTS将我的Web API发布到Azure?

2个回答

92

作为警告信息,您的代码库似乎没有Web项目。 因此,在.NET Core发布任务中,您应该取消选中Publish Web Projects选项,并在project(s)选项中指定您的.csproj

进入图像描述

您还可以查找以下有关Publish Web Projects选项的提示消息:

如果为true,则该任务将尝试在存储库中查找Web项目并对其运行发布命令。 通过存在于目录中的web.config文件或wwwroot文件夹来识别Web项目。


14
我有一个在dotnet core 2中出现的错误。我没有web.config文件(取而代之的是appsettings.json文件),发现我可以通过确保wwwroot文件夹在源代码控制中来解决这个问题。在这种情况下,在GitHub上,我必须在wwwroot中创建一个空文件,让GitHub能够识别到该文件夹(因为由于某些原因,GitHub无法处理空文件夹)。 - Sam
我有两个几乎相同的构建,都是API项目,都没有web.config文件。但在其中一个API项目中,直到我应用了这个建议,它才会创建压缩的工件!?? - reckface
1
已完成:步骤发布 -> 项目:**/*.csproj - Jorge Goncalves
5
当您指定项目名称并且不想麻烦路径时,**/*ProjectName.csproj 应该可以工作。 - NMrt
在 .csproj 前使用双星号,以防SO删除它们。 - Tsagana Nokhaeva

2

这可能会对你有所帮助..

我也遇到了这个错误,根据我的情况,我使用wwwroot文件夹来保存我的文件。

project.csproj

  <ItemGroup>
    <Folder Include="wwwroot\FoodItem\" />
    <Folder Include="wwwroot\Shops\" />
  </ItemGroup>

我将代码推送到VSTS之后,仓库里没有wwwroot文件夹。因此我遇到了这个错误,然后我重新推送了带有子文件夹的wwwroot文件夹,这样错误就被解决了。


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