核心 ASP.NET 项目 Azure Build Pipeline



>我有一个简单的解决方案,其中包含两个项目,我希望它通过 azure 生成管道。一个项目是纯类文件,它将生成一个 DLL,但该代码不是同一文件夹中的 GIT 存储库。另一个项目是 ASP.NET 项目,我已经在管道中配置了它。当我尝试构建项目时,它给了我一个错误,如下所示:

MSBUILD:错误MSB1011:指定要使用的项目或解决方案文件 因为此文件夹包含多个项目或解决方案文件。 [错误]Cmd.exe 以代码"1"退出。

亚姆尔文件

# ASP.NET Core
# Build and test ASP.NET Core projects targeting .NET Core.
# Add steps that run tests, create a NuGet package, deploy, and more:
# https://learn.microsoft.com/azure/devops/pipelines/languages/dotnet-core
trigger:
- master
pool:
name: 'buildserver'
variables:
buildConfiguration: 'Release'
steps:
- script: dotnet build --configuration $(buildConfiguration)
displayName: 'dotnet build $(buildConfiguration)'

错误要求您识别 b/cdotnet不知道您希望它做什么的.sln.csproj(或其他 proj 类型(文件 b/c。

我倾向于为这种事情使用变量,因为我经常在其他任务中使用解决方案名称。

例:

trigger:
- master
pool:
name: 'buildserver'
variables:
buildConfiguration: 'Release'
slnName: 'mySol'
solution: 'some/dir/$(slnName).sln'
steps:
- script: dotnet build $(solution) --configuration $(buildConfiguration)
displayName: 'dotnet build $(buildConfiguration)'

.csproj 示例:

存储库(和解决方案(结构如下:
(这是您问题中仍不清楚的部分(

myRepo
|--.git
|--src
|--proj1
|  |--proj1.csproj
|
|--proj2
|  |--proj2.csproj
|
|--mySol.sln

只需调用希望管道生成的.csproj文件即可。

trigger:
- master
pool:
name: 'buildserver'
variables:
buildConfiguration: 'Release'
projName: 'proj1'
project: 'src/$(projName)/$(projName).csproj'
steps:
- script: dotnet build $(project) --configuration $(buildConfiguration)
displayName: 'dotnet build $(buildConfiguration)'

使用上述示例,无需指定.sln.csproj,因为每个潜在的生成目标都位于其自己的目录中,如果不为其提供值,dotnet cli 将从$pwd进行搜索。因此,如果管道在存储库的根目录中工作(默认行为(,dotnet应首先找到.sln文件并生成它。

然而

如果您的目录结构如下所示,则需要指定:

myRepo
|--.git
|--src
|--proj1.csproj
|--class1.cs
|--class2.cs
|--proj2
|  |--proj2.csproj
|  |--class1.cs
|
|--mySol.sln

在上面的dotnet不知道你是要构建mySol.sln还是proj1.csproj,所以指出要构建的文件应该可以解决你的问题,但我可能会建议你重组你的仓库。

如果proj2不在myRepo安家

并且是proj1的依赖项,那么您将需要在管道中执行一些其他杂技(即:手动 git repo 克隆(才能获得该项目及其需要的文件。如果是这种情况,我强烈建议您将proj2视为完全独立的产品,并将其交付给那些通过NuGet或其他包交付方法依赖于它的项目(proj1(。

最新更新