- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前我的 web.config 看起来像这样:
<configuration>
<connectionStrings configSource="connectionstrings.config"/>
</configuration>
生成部署包(Msbuild.exe + target=Package)时,它不会“神奇地”将我的连接字符串参数化为parameters.xml 文件以在部署时进行替换。
当我内联连接字符串时,一切都很好,并且为我的连接字符串生成了参数..
所以:
如何通过 web.config 转换复制 connectionstrings.config 的内容来替换部署中的 <... configsource="xxx"/>?
编辑:我已经接受了 Sayed Ibrahim 的答案,因为“默认”行为非常好(web.config 中连接字符串的自动参数化)但最终最好准确指定需要参数化的内容(通过 {projectname }.wpp.targets 或 parameters.xml 文件)。
最佳答案
你问了一个错误的问题,不用担心如何转换回 web.config。相反,只需在文件中应在的位置为连接字符串创建参数即可。我刚刚在 http://sedodream.com/2012/05/13/VSWebPublishHowToParameterizeConnectionStringsOutsideOfWebconfig.aspx 上写了这篇博客。我还为您粘贴了以下内容。
如果您在 VS 2010 或 VS 11 中使用 Visual Studio Web 发布来创建 Web 部署包,那么您可能知道我们会自动在 web.config 中参数化连接字符串。如果您不熟悉 Web 部署参数,它们是一种声明您希望在稍后发布包时能够轻松更新某些内容的值的方法。连接字符串是发布期间通常需要更新的内容的很好示例。
正如我之前所说,如果您在 Visual Studio 中创建 Web 部署包,我们将自动为 web.config 中的所有连接字符串创建 Web 部署参数。今天早些时候我看到了一个question on StackOverflow asking how to parameterize connection strings in non-web.config files (问题实际上问了别的东西,但我认为这才是他真正想要的)。我创建了一个示例来展示如何执行此操作。下面是 web.config 中的 connectionStrings 元素的样子。
<connectionStrings configSource="connectionStrings.config" />
这是connectionStrings.config
<connectionStrings>
<clear/>
<add name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
<add name="OtherConnectionString"
connectionString="data source=.\SQLExpress;Integrated Security=SSPI;Initial Catalog=foo"
providerName="System.Data.SqlClient"/>
</connectionStrings>
为了参数化这些连接字符串,您必须扩展 Web 发布管道。为此,请在您正在工作的项目的根目录中创建一个名为 {project-name}.wpp.targets 的文件(对于 VS 11 项目,您可以将所有这些直接放在 .pubxml 文件中)。这将是一个 MSBuild 文件,将导入到构建/发布过程中。以下是需要创建的文件。
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<!-- Here we need to declare MSDeploy parameters for connection strings in connectionStrings.config -->
<MsDeployDeclareParameters Include="ApplicationServices-ConnectionString" >
<Kind>XmlFile</Kind>
<Scope>connectionStrings.config$</Scope>
<Match>/connectionStrings/add[@name='ApplicationServices']/@connectionString</Match>
<Description>Connection string for ApplicationServices</Description>
<DefaultValue>data source=(localhost);Initial Catalog=AppServices</DefaultValue>
<Tags>SqlConnectionString</Tags>
</MsDeployDeclareParameters>
<MsDeployDeclareParameters Include="OtherConnectionString-ConnectionString" >
<Kind>XmlFile</Kind>
<Scope>connectionStrings.config$</Scope>
<Match>/connectionStrings/add[@name='OtherConnectionString']/@connectionString</Match>
<Description>Connection string for OtherConnectionString</Description>
<DefaultValue>data source=(localhost);Initial Catalog=OtherDb</DefaultValue>
<Tags>SqlConnectionString</Tags>
</MsDeployDeclareParameters>
</ItemGroup>
</Project>
在这里您可以看到我正在为 MSDeployDeclareParameters 创建值。当您打包/发布时,此项目列表用于创建 MSDeploy 参数。下面是每个包含的元数据值的解释。
创建此文件后,您需要关闭/重新打开 VS(它会缓存导入的 .targets 文件)。然后您可以创建一个 Web 部署包。当您这样做时,将声明这些新参数。就我而言,然后我将其导入到 IIS 管理器中,下面是显示参数的对话框。
正如您所看到的,应用程序路径参数以及我的自定义连接字符串值都显示在那里。当我更新文本框中的值并在网络服务器上打开 connectionStrings.config 时,它们就是我在对话框中输入的值。
仅供引用,我已将此示例上传到我的 github 帐户 ParameterizeConStringConfig .
关于msbuild - 如何在转换时将 configSource 转换为 web.config 中的内联元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10411326/
我有一个 WCF 数据服务,其中包含我在 page_load 事件期间异步调用的一些方法。 我需要一个解决方案,以便在必要时从脚本或控制台应用程序调用这些方法。 我创建了一个引用 WCF .dll 库
我有两个应用程序,一个是控制台应用程序,另一个是 ASP.NET 应用程序。他们都需要知道相同的appSettings 和connectionStrings。因此,理想情况下,我想使用 app.con
我想使用 Azure tfs 为 .net Web 应用程序开发管道。我使用了已为此类部署提供的 IIS Web 部署模板/实用程序。在发布管道中,我使用 XML 变量转换。但我面临的一个问题是,在项
我想使用 Azure tfs 为 .net Web 应用程序开发管道。我使用了已为此类部署提供的 IIS Web 部署模板/实用程序。在发布管道中,我使用 XML 变量转换。但我面临的一个问题是,在项
有人知道如何使用标准 API 获取 configSource 值吗? 或者我需要解析 XML 中的 web.config 来获取值吗? 最佳答案 您需要加载 AppSettingsSection ,
有没有办法从代码中检索 configSource?我创立了How to programmatically retrieve the configSource Location from config
在我的 MVC 应用程序中,我使用外部配置文件来保持干净的 web.config。有些文件很常见,我将它们作为来自一个位置的链接添加到项目中。对于那些文件,我将“复制”选项设置为“始终复制”,这些文件
这个问题有点像两个伙伴。在 VS2015 中,我的 MVC 项目有多种不同的构建配置,测试、UAT、Live 等。使用我的 web.config 我可以简单地右键单击它并选择 Add Config T
我想使用 configSource我的 web 配置部分的属性,用于为各种设置定义外部文件。 特别是 appSettings 部分。这意味着我的配置文件具有以下条目: 但是,如果更新此文件,则不会自
我通过将连接字符串从 web.config 移到外部文件中来保护我的 MVC5 项目,而不是将其 checkin 源代码管理,也不将其添加到项目中。 我的 web.config 看起来像 这在
在我的 web.config 中,我有: 在 SessionState.config 中我有: 我尝试过各种咒语,但似乎无法使其发挥作用。我收到此错误: Parser Error Messag
ASP.NET 站点使用 IIS 中的 ARR(应用程序请求路由)进行负载平衡。相应的URL重写规则放在applicationHost.config中。 有什么方法可以在新的配置文件中分离这条规则吗?
我在 Jenkins 构建服务器上运行自动化测试时遇到问题,因为我使用 将连接字符串从我的配置文件移动到 searate 文件。 当我从 Jenkins 工作区在 VS2013 中打开项目并运行测试
我正在研究如何使用配置管理器在 C# 中为 WPF 应用程序读取/写入 App.config 文件中的自定义部分。我在 .NET 2.0 Configuration Demystified 上阅读了这
下面找到了丰富的资料here我们怎样才能让外部 .config 工作?我已尝试使用与外部 appSettings 文件相同的设置,但无法找到我的自定义部分的文件。 ... 然而...
我正在尝试将一个 app.config 文件拆分为多个文件,以便更轻松地管理不同环境所需的差异。对于某些部分,这很容易... various stuff 成为 将“各种内容”移至 sys
我正在尝试使用 web.config 转换更新我的 web.config 文件中 appSettings 元素上的 configSource 属性。 我的 web.config 中有以下内容
在 ASP.NET 应用程序的 web.config 文件中,配置的某些部分(例如 appSettings 和 connectionStrings)支持属性 file 和 configSource。
目前我的 web.config 看起来像这样: 生成部署包(Msbuild.exe + target=Package)时,它不会“神奇地”将我的连接字符串参数化为parameters.xml
我正在尝试定义自定义 DeltaSpike ConfigSource。自定义配置源将具有最高优先级,并检查数据库中的配置参数。 我有一个 ConfigParameter 实体,它只有一个键和一个值。
我是一名优秀的程序员,十分优秀!