7

我仍在努力解决 MSBuild 的问题。目前,我正在使用PackageWeb-Nuget-Package中生成的脚本(视频演示)通过 powershell 脚本进行部署。我已经尝试了几天,它似乎有效。但是“突然”生成的 web.config 中的连接字符串被标记了,而不是我看到的有问题的连接字符串

connectionString="$(ReplacableToken_DefaultConnection-Web.config Connection String_0)

我写“突然”是因为我无法将这种(对我来说是新的)行为与我在前几个小时所做的任何事情联系起来。

总结一下:包中的部署工作正常,并且正在应用正确的配置转换,但我最终得到了这个标记化的连接字符串。

我意识到如果我插入我可以解决这个问题

<AutoParameterizationWebConfigConnectionStrings>false</AutoParameterizationWebConfigConnectionStrings>

放入一个 PropertyGroup(我只是将它放入 Nuget-Package 创建的生成的目标文件中)

但是我真的不喜欢这个,必须将这个附加值插入到每个可能需要它的项目中;特别是因为我一开始并不知道我需要这种调整。昨天它起作用了,我没有将这条额外的行插入任何项目或目标文件中。

所以我希望也许有人知道一个额外的开关、技巧或设置,它们也可能对它的工作方式产生额外的影响。

4

3 回答 3

6

Microsoft 默认使用自动参数化。这包括 het 连接字符串。您可以通过将其添加到项目文件来禁用它。

<AutoParameterizationWebConfigConnectionStrings>false</AutoParameterizationWebConfigConnectionStrings>

要禁用所有转换,您可以按照此处所述添加它。

<TransformWebConfigEnabled>false</TransformWebConfigEnabled>

要禁用部署包的所有参数: <DisableAllVSGeneratedMSDeployParameter>true</DisableAllVSGeneratedMSDeployParameter>

于 2017-04-11T08:15:15.767 回答
1

现在我的公司一直在使用 TFS 的“发布管理器”工具,该工具在单个构建中工作,我们不再使用 web.config 转换,而是使用 MS WebDeploy 的 parameters.xml 方法来交换不同环境的值。但是,我遇到了上面提到的 'auto-gen'd' conn 字符串的问题。下面是一种解决方法。

如果您在项目中使用parameters.xml 文件,并且为您的参数指定与连接字符串的自动生成名称相同的名称,则它可以工作。

所以下面我有一个'DBConnectionNameHere'(web.config 中我的示例connectionStrings'name'),然后我只需将“-Web.config Connection String”附加到名称。现在代替自动生成的 conn 字符串覆盖我在 parameters.xml 文件中自己的字符串,它将起作用,只需添加一个额外且无害的“parameterEntry”子标签。

例如:

<parameter name="DbConnectionNameHere-Web.config Connection String" defaultValue="#{TokenHereOrActualValue}#">

  <parameterEntry kind="XmlFile" scope="\\web.config$" 
match="/configuration/connectionStrings/add[@name='DbConnectionNameHere']/@connectionString" />

</parameter>

希望对某人有所帮助!

克里斯

于 2017-07-13T20:21:28.727 回答
0

我注意到像 $(ReplacableToken_ 这样的事情在发布时似乎是随机发生的,并且能够通过在重建和重新发布之前进行清理来解决这种情况。但是,除非你总是在发布后手动检查 web.config,否则你无法真正知道, 我也加了

<AutoParameterizationWebConfigConnectionStrings>false</AutoParameterizationWebConfigConnectionStrings>

到有问题的 Web 服务项目。

于 2014-02-21T14:06:41.283 回答