"AutoParameterizationWebConfigConnectionStrings" - 选项是防止连接字符串标记化的唯一方法吗?

DrC*_*ste 6 msbuild msdeploy msbuild-propertygroup webdeploy

我仍然试图了解MSBuild的事情.目前,我正在使用PackageWeb-Nuget-Package(视频演示)中生成的脚本来部署via powershell脚本.我已经尝试了几天了,它似乎工作.但是"突然"生成的web.config中的连接字符串被标记化,而不是我看到的连接字符串

connectionString="$(ReplacableToken_DefaultConnection-Web.config Connection String_0)
Run Code Online (Sandbox Code Playgroud)

我"突然"写道,因为我无法将这个(对我来说是新的)行为与我在前几个小时里完成的任何事情联系起来.

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

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

<AutoParameterizationWebConfigConnectionStrings>false</AutoParameterizationWebConfigConnectionStrings>
Run Code Online (Sandbox Code Playgroud)

到PropertyGroup(我只是把它放到Nuget-Package创建的生成的目标文件中)

但是我真的不喜欢这个,不得不将这个附加值插入到可能需要它的每个项目中; 特别是因为我不知道我首先需要这个调整.昨天它工作,我没有将这个额外的行插入任何项目或目标文件.

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

Ral*_*sen 6

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

<AutoParameterizationWebConfigConnectionStrings>false</AutoParameterizationWebConfigConnectionStrings>

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

<TransformWebConfigEnabled>false</TransformWebConfigEnabled>

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


小智 0

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

<AutoParameterizationWebConfigConnectionStrings>false</AutoParameterizationWebConfigConnectionStrings>
Run Code Online (Sandbox Code Playgroud)

到相关的 Web 服务项目。