Visual studio 带有Azure Devops和共享库的MSBuild

Visual studio 带有Azure Devops和共享库的MSBuild,visual-studio,msbuild,azure-devops,azure-pipelines,Visual Studio,Msbuild,Azure Devops,Azure Pipelines,我有一个解决方案,我正在迁移到Azure Devops管道,并且在弄清楚如何使用共享项目时遇到了困难。下面是一个场景。我有3个项目:Common.csproj、A.csproj和B.csproj。这两个项目都使用了Common。A和B引用通过我的解决方案中的项目引用而通用 <ItemGroup> <ProjectReference Include="..\Common\Common.csproj"> <Project>{40838373-5284-

我有一个解决方案,我正在迁移到Azure Devops管道,并且在弄清楚如何使用共享项目时遇到了困难。下面是一个场景。我有3个项目:Common.csproj、A.csproj和B.csproj。这两个项目都使用了Common。A和B引用通过我的解决方案中的项目引用而通用

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

{40838373-5284-4073-86e5-9bf4e1bfb855}
普通的
我已经将公共项目移动到它自己的git repo中,并有一个构建管道,在最后发布构建工件dll

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

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

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

因此,要解决此问题,您应该在生成引用项目A和B之前添加引用。您可以使用项目引用来生成解决方案,而不是使用dll文件来生成项目A、B

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

一些步骤:

  • 构建公共项目,将其打包到nuget包并发布nuget包 到Azure Devops工件
  • 使用Visual Studio将nuget软件包安装到本地的项目A和B中
  • 使用Azure Devops构建项目A和项目B时,使用nuget restore任务还原nuget包
查看文档以了解更多详细信息。 希望这有帮助

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

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

因此,要解决此问题,您应该在生成引用项目A和B之前添加引用。您可以使用项目引用来生成解决方案,而不是使用dll文件来生成项目A、B

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

一些步骤:

  • 构建公共项目,将其打包到nuget包并发布nuget包 到Azure Devops工件
  • 使用Visual Studio将nuget软件包安装到本地的项目A和B中
  • 使用Azure Devops构建项目A和项目B时,使用nuget restore任务还原nuget包
查看文档以了解更多详细信息。
希望这有帮助

我想这可能就是答案。我会试试nuget方法。我只是希望有一种方法可以做到这一点,因为我宁愿处理项目参考而不是nuget软件包来简化开发,特别是当nuget软件包将继续改变时,我可以理解您的期望。但受限于VS构建的机制,我们无法在构建过程中添加引用。看来要达到你的期望还有很长的路要走。此外,当nuget包将继续更改时,我们希望使用项目参考。有关更多详细信息,请查看我的。希望这有帮助。我想这可能是答案。我会试试nuget方法。我只是希望有一种方法可以做到这一点,因为我宁愿处理项目参考而不是nuget软件包来简化开发,特别是当nuget软件包将继续改变时,我可以理解您的期望。但受限于VS构建的机制,我们无法在构建过程中添加引用。看来要达到你的期望还有很长的路要走。此外,当nuget包将继续更改时,我们希望使用项目参考。有关更多详细信息,请查看我的。希望这有帮助。