Web 部署的 TFS 2012 构建定义忽略项目文件中定义的参数

2024-01-15

我正在尝试设置一个 TFS 2012 构建定义,该定义将构建一个解决方案并在该解决方案中部署多个 Web 应用程序。我碰到本文 http://chriskadel.com/2013/03/20/using-tfs-to-build-and-deploy-during-the-build-process-with-ms-deploy/这似乎正是解决了我正在尝试做的事情,并且似乎也同意提到的解决方案here https://stackoverflow.com/questions/6457108/how-to-tell-tfs-to-deploy-multiple-webapps-containing-in-one-solution.

因此,我尝试实现该文章中描述的构建定义/项目配置,但无论我做什么,它似乎都会忽略我放入 csproj 文件的特定配置属性组中的参数,如下所示:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'MyConfig|AnyCPU' ">
  ...
  <DeployIisAppPath>My Website Name</DeployIisAppPath>
  <MsDeployServiceUrl>MyWebServer</MsDeployServiceUrl>
</PropertyGroup>

对于我尝试部署的每个项目,我都会收到以下错误:

Web Deploy publish/package validating error: Missing or Invalid property value for $(MsDeployServiceUrl)

因此,我尝试在构建定义的 MSBuild Arguments 中定义 MsDeployServiceUrl,而不是在 csproj 文件中。这解决了上述错误,但随后我收到此错误:

The “ConcatFullServiceUrlWithSiteName” task was not given a value for the required parameter “SiteAppName”.

因此,它也不会从 csproj 文件中读取 DeployIisAppPath 参数,而且我无法将其移至 MSBuild Arguments 行,因为它对于我尝试部署的每个项目都不同。

部署过程几乎不知道我正在构建哪个配置,因此它无法在 csproj 文件中找到正确的 PropertyGroup 来读取参数。但是,我已在构建定义的“Configurations to Build”行中指定了配置,并且还尝试将 /p:Configuration=MyConfig 添加到 MSBuild Arguments 行,但这似乎并不能解决问题。

Update:

好的,TFS 似乎无法识别解决方案中定义的配置。当我在构建定义中选择“要构建的配置”时,对话框中“配置”列中的下拉列表仅显示默认的“调试”和“发布”。我们的解决方案中定义了大约六种其他配置,但没有显示。我尝试手动输入配置,甚至仔细检查拼写是否正确。它可以构建,但没有使用正确的配置(应用了错误的 Web.config 转换)。这解释了为什么它不从项目文件中正确的 PropertyGroup 读取构建属性。

这可能是我们的 TFS 安装/配置有问题吗?解决方案定义的配置是否应该显示在该下拉列表中,或者您是否始终必须在第一次手动输入自定义配置名称?


我通过从配置管理器中删除/重新创建所有解决方案/项目配置自行解决了这个问题

显然,我们的解决方案配置出了问题,导致从构建定义中使用它们的尝试失败了。我最好的猜测是,当它们被创建时,它们是从现有配置复制/粘贴的,但在这个过程中遗漏了一些东西,它们仍然以某种方式指向原始的源配置。然而我不是最初创建它们的人,所以我不能确定到底出了什么问题。

不管怎样,我为每个项目文件中的每个配置保存了 PropertyGroup XML 的备份,然后通过配置管理器从解决方案和每个项目中完全删除了每个配置。然后,我重新创建了每个配置,并从备份中恢复了每个项目中的 PropertyGroup。现在,我的构建定义正在从正确的 PropertyGroup 中读取构建属性,并在 Web.config 上执行正确的转换。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Web 部署的 TFS 2012 构建定义忽略项目文件中定义的参数 的相关文章

随机推荐