带有Azure Devops和共享库的MSBuild

时间:2019-01-28 21:23:59

标签: visual-studio msbuild azure-devops azure-pipelines

我有一个解决方案,即将迁移到Azure Devops管道,并且在弄清楚如何使用共享项目时遇到了麻烦。所以这是场景。我有3个项目Common.csproj,A.csproj和B.csproj。在两个项目中都使用Common。 A和B通过我的解决方案中的项目参考来参考Common。

<ItemGroup>
  <ProjectReference Include="..\Common\Common.csproj">
    <Project>{40838373-5284-4073-86e5-9bf4e1bfb855}</Project>
    <Name>Common</Name>
  </ProjectReference>
</ItemGroup>

我已将Common项目移至它自己的git repo,并具有一个构建管道,该管道在最后发布了构建构件dll。

在我的项目A管道中,我试图下载该Common构建工件,并使用msbuild进行引用,但尚未弄清楚该如何做。是否存在直接引用程序集的命令行参数,或者我是否以错误的方式考虑了此问题?

1 个答案:

答案 0 :(得分:1)

  

是否存在直接引用程序集的命令行参数,或者我是否以错误的方式考虑了此问题?

恐怕没有这样的命令行参数可以直接引用程序集。那是因为我们无法在构建过程中添加引用,因此Visual Studio / MSBuild是一种预编译机制,它在构建之前会获得所有引用组装路径。

因此,要解决此问题,应在创建参考项目A和B之前添加参考。可以使用项目参考而不是带有dll文件的项目A,B来构建解决方案。

此外,如果仍然单独使用Common项目作为dll文件,则可以尝试使用nuget

一些步骤:

  • 构建Common项目,将其打包到nuget包中并发布nuget包 到Azure Devops神器。
  • 使用Visual Studio将nuget软件包安装到本地的项目A和B。
  • 在使用Azure Devops构建项目A和B时,使用nuget restore任务还原nuget程序包。

查看文档Get started with NuGet packages in Azure DevOps Services and TFS,了解更多详细信息。 希望这可以帮助。