如何在Bitbucket管道中构建子文件夹

时间:2017-08-01 03:58:16

标签: msbuild bitbucket-pipelines

我正在努力配置Bitbucket管道中的构建。

它是一个C#解决方案,代码位于子文件夹中,而不是存储库的根文件夹中。这就是为什么当我构建它时,我得到错误:

  

+ dotnet restore

     

MSBUILD:错误MSB1003:指定项目或解决方案文件。当前工作目录不包含项目或解决方案文件。

我已经阅读了文档,但似乎没有选择尝试指定子文件夹。那你怎么配置它?

这是我的.yml文件:

image: microsoft/dotnet:latest

pipelines:
  default:
    - step:
        caches:
          - dotnetcore
        script: # Modify the commands below to build your repository.
          - export PROJECT_NAME=MyProjectNameHere
          - export TEST_NAME=MyProjectNameHere
          - dotnet restore
          - dotnet build $PROJECT_NAME
          - dotnet test $TEST_NAME

4 个答案:

答案 0 :(得分:5)

通过实验找到它,文档根本没有提到它。

您需要在两行上使用完整路径和解决方案文件名,并且只需使用restore行上的文件夹名称:

image: microsoft/dotnet:latest

pipelines:
  default:
    - step:
        caches:
          - dotnetcore
        script: # Modify the commands below to build your repository.
          - export PROJECT_NAME=FolderNameHere/MySolution.sln # use the full path and solution file name
          - export TEST_NAME=FolderNameHere/MySolution.sln # use the full path and solution file name
          - dotnet restore FolderNameHere # use only folder name here
          - dotnet build $PROJECT_NAME
          - dotnet test $TEST_NAME

答案 1 :(得分:0)

现在,您还可以使用项目文件夹,而无需使用PROJECT_NAME和TEST_NAME变量中的.sln文件。

- step:
    caches:
      - dotnetcore
    script: # Modify the commands below to build your repository.
      - export PROJECT_NAME=YourSolutionFolder/YourProjectFolder
      - export TEST_NAME=YourSolutionFolder/YourTestProjectFolder
      - dotnet restore YourSolutionFolder
      - dotnet build $PROJECT_NAME
      - dotnet test $TEST_NAME

答案 2 :(得分:0)

也许您可以在调用构建命令之前cd进入子文件夹。

image: microsoft/dotnet:latest

pipelines:
  default:
    - step:
        caches:
          - dotnetcore
        script:
          - cd MyProject # Set current working directory to subfolder
          - export ...
          - dotnet restore

您还可以通过运行pwd(“打印工作目录”)的步骤,随时添加支票以打印当前文件夹。

答案 3 :(得分:0)

我是通过实验发现的。

image: mcr.microsoft.com/dotnet/core/sdk:3.1
pipelines:
  default:
    - step:
        caches:
          - dotnetcore
        script: # Modify the commands below to build your repository.
          - cd MainDir
          - cd SubDir
          - export PROJECT_NAME=MyProject
          - export TEST_NAME=MyProject.Test
          - dotnet restore 
          - dotnet build $PROJECT_NAME
          - dotnet test $TEST_NAME