我正在使用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>
[...]
答案 0 :(得分:1)
“内容”的构建操作是正确的,您不想更改它。看来你的根本问题是如何设置项目以支持VSTS构建/发布。
在VSTS构建创建期间,任何带有
的.config文件<DependentUpon>Web.config</DependentUpon>
将作为构建过程的一部分被删除。如果您稍后要在发布期间转换文件,则不希望这样。
为此,您需要删除项目(.csproj / .vbproj)文件中的DependentUpon标记。这将使各种环境的所有配置文件在解决方案资源管理器中都可见,但不要担心,它不会破坏任何内容。
我还建议在这种情况下不需要拆分文件,你可以将这一切都归还给一个Web.config文件。