【发布时间】:2020-04-03 20:32:06
【问题描述】:
我们有一个包含多个项目的 ASP.Net 解决方案。每个项目都有 build.pubxml 和唯一的文件夹路径。
例如:
在项目Test 中,build.pubxml 中有这一行:
<publishUrl>C:\publish\SolutionName\Test</publishUrl>
在项目Exam 中,我们在build.pubxml 中有这一行:
<publishUrl>C:\publish\SolutionName\Exam</publishUrl>
在带有此参数的 MSBuild 步骤的构建管道中(在 TFS 中):
/p:PublishProfile=build.pubxml
在构建之后,我们得到了 2 个文件夹 - Test 和 Exam 中的 C:\publish\SolutionName。
到目前为止一切顺利。
问题是我们的分支很少,我们想为每个分支分开发布文件夹,所以我们为每个分支添加了.pubxml,并在构建管道中指定了正确的。但是 make 在创建的每个新分支上都需要做很多工作,并且可能会导致错误。
我们尝试在 MSBuild 中传递 /p:publishUrl=C:\publish\BranchName,但随后我们得到了一个文件夹,其中包含 Test 和 Exam 的所有内容,而不是两个文件夹。
想法是每个项目只有一个 .pubxml 文件,并在管道中传递值,例如:
<publishUrl>C:\publish\$(Parameter)\Test</publishUrl>
并且在构建中我们会根据分支传递参数。
有可能做这样的事情吗?
【问题讨论】:
-
我假设您正在使用调用 msbuild 进行构建和部署的 VS 构建任务。并且 msbuild 可以接受命令行中的属性,即使这些属性未在 csproj 中定义,请参阅here。
标签: asp.net asp.net-mvc tfs msbuild pubxml