如何在gitlab的另一个存储库中导入一个存储库的.targets文件?

时间:2020-05-19 06:37:31

标签: .net git msbuild gitlab gitlab-ci

我在gitlab中有一个存储库product-config,其中包含其他存储库共享的设置/配置。

例如我有一个ec-firmware-service仓库,其中有.productConfiguration.targets个文件,它像这样导入.target个仓库的product-config文件

 <Import Project="$(MSBuildThisFileDirectory)..\..\product-config\.msbuild\TransformApplicationConfig.targets" />
 <Import Project="$(MSBuildThisFileDirectory)..\..\product-config\.msbuild\TaskConfigPreprocessor.targets" />

product-config存储库中确实有这些目标文件,但是我仍然遇到此构建错误

C:\builds\engineering\myproject\swc\ec-firmware-service\Configuration\\.productConfiguration.targets(5,3):
error MSB4019: The imported project
"C:\builds\engineering\myproject\swc\product-config\\.msbuild\TransformApplicationConfig.targets"
was not found. Confirm that the expression in the Import declaration
"C:\builds\engineering\myproject\swc\ec-firmware-service\Configuration\\..\\..\product-config\\.msbuild\TransformApplicationConfig.targets"
is correct, and that the file exists on disk.
[C:\builds\engineering\myproject\swc\ec-firmware-service\src\EC.FirmwareService.WebApi\EC.FirmwareService.WebApi.csproj]

所以基本上是这个错误

The imported project "C:\builds\engineering\myproject\swc\product-config\.msbuild\TransformApplicationConfig.targets" was not found.

哪个是正确的目录和TransformApplicationConfig.targets文件的路径,但由于某种原因它无法接收它。

我能看到的唯一原因是因为它在不同的存储库中。

有什么方法可以将目标文件放在gitlab中的不同存储库中吗?

更新

我的目标是在我的.gitlab-ci.yml文件mcr.microsoft.com/dotnet/framework/sdk

中使用此docker映像构建.net框架解决方案。

建议的一种解决方案是在构建解决方案时将存储库克隆到当前存储库,因此我尝试这样做,但是我使用的docker映像不包含git,因此无法遵循该解决方案。

这就是我在gitlab文件中写的内容

# Build
Build:
  stage: build
  image: mcr.microsoft.com/dotnet/framework/sdk
  before_script:
    #- git 
  script:
    - echo $URL
    - cd src
    #- git clone https://${productconfigdeployerusername}:${productconfigdeployerpassword}@gitlab.cpicloudservices.com/engineering/easitrax-connect/swc/product-config.git
    - msbuild /t:restore
    - msbuild EC.FirmwareService.sln /p:Configuration=Release
  only:
    - branches
  tags:
    - windows-runner
  environment:
    name: development

您可以看到git clone行已被注释。如果我取消注释,它将开始发出错误,提示无法识别git

1 个答案:

答案 0 :(得分:0)

您可以尝试创建一个新映像并在其中安装git,但我不知道如何在Windows中执行该操作。

相反,您可以添加一个单独的作业来克隆存储库,并将其导出为作业工件。然后,Windows作业可以使用此工件,从而消除了图像中对git的需要。

become: yes
become_user: root

免责声明:我没有运行此代码,它可能包含错误。