ConnectionStrings中的ConfigSource - WEB.config ASP.NET

时间:2018-01-26 13:44:18

标签: asp.net msbuild azure-devops aspnet-compiler

我正在使用VSTS进行自动发布,整个过程在多个服务器上执行发布,每个服务器在WEB.config中都有自己的特定设置。 我在将发布文件放入文件夹之前删除了WEB.config,因此我没有替换现有的文件,但这会导致一些问题。

我找到的解决方案是使用其他文件来补充WEB.config,因此在AppSettings中我使用了file =“”属性来链接其他名为WebAppSettings.config的档案中的其他设置。

此WebAppSettings.config文件的编辑操作为None,因此在发布时会被忽略,当文件被放入文件夹时,它不会与当前文件重叠。

但是当尝试对ConnectionStrings执行相同操作时,使用configSource =“”属性指示WebConnectionStrings.config加载项文件,它在修剪期间失败,因为构建不接受该文件具有其他编译操作比内容,如果我把None或其他文件,它只是说错误找不到文件。

你有什么办法吗?如何使WebConnectionStrings.config与None一起使用?我认为它的工作方式与AppSettings相同。我在研究中找不到任何帮助解决WEB.config问题的内容。

使用AspNetPreCompile编译的Pre视图完成发布 MSBUILD参数:

/ p:DeployOnBuild = true / p:PackageAsSingleFile = true / p:SkipInvalidConfigurations = true / p:PackageLocation =“$(build.artifactstagingdirectory)\”/ p:WebPublishMethod = FileSystem / p:PrecompileBeforePublish = true / p: EnableUpdateable = false / p:DebugSymbols = false / p:WDPMergeOption = MergeAllOutputsToASingleAssembly / p:UseMerge = true / p:SingleAssemblyName = AppViews

的web.config

[...]

<connectionStrings configSource="WebConnectionStrings.config"></connectionStrings>

<appSettings file="WebAppSettings.config">
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    <add key="MvcFlashMessages/IsClosable" value="true" />
    <add key="MvcFlashMessages/InnerCssClass" value="alert" />
</appSettings>

[...]

1 个答案:

答案 0 :(得分:1)

“内容”的构建操作是正确的,您不想更改它。看来你的根本问题是如何设置项目以支持VSTS构建/发布。

在VSTS构建创建期间,任何带有

的.config文件
<DependentUpon>Web.config</DependentUpon>

将作为构建过程的一部分被删除。如果您稍后要在发布期间转换文件,则不希望这样。

为此,您需要删除项目(.csproj / .vbproj)文件中的DependentUpon标记。这将使各种环境的所有配置文件在解决方案资源管理器中都可见,但不要担心,它不会破坏任何内容。

我还建议在这种情况下不需要拆分文件,你可以将这一切都归还给一个Web.config文件。