在构建管道期间覆盖发布配置文件的发布文件夹 (url)
Override publish folder (url) of publish profile during the build pipeline
我们有一个 ASP.Net 多个项目的解决方案。每个项目 build.pubxml
具有唯一的文件夹路径。
例如:
在项目 Test
中,我们在 build.pubxml
中有这一行:
<publishUrl>C:\publish\SolutionName\Test</publishUrl>
在项目 Exam
中,我们在 build.pubxml
中有这一行:
<publishUrl>C:\publish\SolutionName\Exam</publishUrl>
在构建管道(在 TFS 中)中,MSBuild 步骤使用此参数:
/p:PublishProfile=build.pubxml
构建后,我们在 C:\publish\SolutionName
.
中获得了 2 个文件夹 - Test
和 Exam
到目前为止一切顺利。
问题是我们的分支很少,我们想为每个分支分开发布文件夹,因此我们为每个分支添加了 .pubxml
,并在构建管道中指定了正确的分支。但是 make 在创建的每个新分支上都需要做很多工作,并且可能会导致错误。
我们试图在 MSBuild 中传递 /p:publishUrl=C:\publish\BranchName
,但随后我们得到了一个文件夹,其中包含 Test
和 Exam
的所有内容,而不是两个文件夹。
想法是每个项目只有 一个 .pubxml
文件,并在管道中传递值,例如:
<publishUrl>C:\publish$(Parameter)\Test</publishUrl>
而在build中我们会根据branch传参
有可能做这样的事情吗?
It is possible to do something like this?
答案是肯定的。由于 msbuild 在命令行中接受 Global Properties。如果我们在 build.pubxml
中定义一个 属性,例如 <publishUrl>C:\PublishFolders$(BranchID)\xxx(Test,Exam...)</publishUrl>
,那么我们可以像这样简单地在 msbuild 参数中传递值:
然后我们将在 C:\PublishFolders\NewTest
下获得 Test
和 Exam
文件夹。我们也可以选择将管道预定义变量传递给命令,如:/p:BranchID=$(Build.SourceBranch)
...
这适用于在本地机器、tfs 和 Azure Devops 管道中构建。希望以上对您有所帮助:)
我们有一个 ASP.Net 多个项目的解决方案。每个项目 build.pubxml
具有唯一的文件夹路径。
例如:
在项目 Test
中,我们在 build.pubxml
中有这一行:
<publishUrl>C:\publish\SolutionName\Test</publishUrl>
在项目 Exam
中,我们在 build.pubxml
中有这一行:
<publishUrl>C:\publish\SolutionName\Exam</publishUrl>
在构建管道(在 TFS 中)中,MSBuild 步骤使用此参数:
/p:PublishProfile=build.pubxml
构建后,我们在 C:\publish\SolutionName
.
Test
和 Exam
到目前为止一切顺利。
问题是我们的分支很少,我们想为每个分支分开发布文件夹,因此我们为每个分支添加了 .pubxml
,并在构建管道中指定了正确的分支。但是 make 在创建的每个新分支上都需要做很多工作,并且可能会导致错误。
我们试图在 MSBuild 中传递 /p:publishUrl=C:\publish\BranchName
,但随后我们得到了一个文件夹,其中包含 Test
和 Exam
的所有内容,而不是两个文件夹。
想法是每个项目只有 一个 .pubxml
文件,并在管道中传递值,例如:
<publishUrl>C:\publish$(Parameter)\Test</publishUrl>
而在build中我们会根据branch传参
有可能做这样的事情吗?
It is possible to do something like this?
答案是肯定的。由于 msbuild 在命令行中接受 Global Properties。如果我们在 build.pubxml
中定义一个 属性,例如 <publishUrl>C:\PublishFolders$(BranchID)\xxx(Test,Exam...)</publishUrl>
,那么我们可以像这样简单地在 msbuild 参数中传递值:
然后我们将在 C:\PublishFolders\NewTest
下获得 Test
和 Exam
文件夹。我们也可以选择将管道预定义变量传递给命令,如:/p:BranchID=$(Build.SourceBranch)
...
这适用于在本地机器、tfs 和 Azure Devops 管道中构建。希望以上对您有所帮助:)