gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 11:42:30 25 4
gpt4 key购买 nike

我正在尝试设置一个 TFS 2012 构建定义,它将构建一个解决方案并在该解决方案中部署多个 Web 应用程序。我遇到了 this article这似乎正好解决了我正在尝试做的事情,并且似乎也同意提到的解决方案 here .

因此,我尝试按照该文章中的描述实现构建定义/项目配置,但无论我做什么,它似乎都忽略了我放入 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 参数中而不是在 csproj 文件中定义 MsDeployServiceUrl。这解决了上述错误,但随后出现此错误:
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 行中,但这似乎并没有解决问题。

更新:

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

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

最佳答案

我通过从 Configuration Manager 中删除/重新创建我们所有的解决方案/项目配置,自己设法解决了这个问题

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

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

关于webdeploy - 用于 Web 部署的 TFS 2012 构建定义忽略项目文件中定义的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18219713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com