问题标签 [web-config-transform]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
visual-studio-2012 - 针对不同环境进行 web.config 转换时出错
我试图将我的应用程序部署到不同的环境中,然后我开始遵循以下方法: 使用 Visual Studio 或 Visual Web Developer 将 ASP.NET Web 应用程序部署到托管提供程序:Web.Config 文件转换 - 3 of 12
在我点击Preview Transform之前是完美的,我收到了这个错误:
微软视觉工作室
无法加载文件或程序集“Microsoft.Web.XmlTransform,Version=1.2.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。该系统找不到指定的文件。
(我只创建了一个转换Web.DebugQA.config,当然还有默认的,调试和发布)
我的Web.DebugQA.config看起来像这样:
但后来我安装了这个插件:
我解决了我的预览转换错误,但是当我尝试使用 QADev 转换发布时,我收到了这个错误:
“ImportParametersFile”任务意外失败。
System.IO.FileNotFoundException:无法加载文件或程序集“Microsoft.Web.XmlTransform,Version=1.2.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。该系统找不到指定的文件。
文件名: Microsoft.Web.Publishing.Tasks.ImportParametersFile.Execute()
中 Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build中的“Microsoft.Web.XmlTransform, Version=1.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a” .BackEnd.ITaskExecutionHost.Execute()
在 Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__20.MoveNext()警告:程序集绑定日志记录已关闭。
要启用程序集绑定失败日志记录,请将注册表值[HKLM\Software\Microsoft\Fusion!EnableLog]
(DWORD) 设置为 1。
注意:存在与程序集绑定失败日志记录相关的一些性能损失。
要关闭此功能,请删除注册表值[HKLM\Software\Microsoft\Fusion!EnableLog]
。
我正在使用 Visual Studio Pro 2012。
xpath - Web Config 转换:如果不存在则插入
当且仅当目标中不存在匹配的元素时,我想应用转换。使用http://webconfigtransformationtester.apphb.com/尝试各种 xpath 表达式,但到目前为止没有运气。
例如,如果目标 web.config 看起来像这样:
那么输出应该是这样的:
但如果目标看起来像这样:
那么转换的结果应该是这样的:
换句话说,我只是想将命名的连接字符串添加到配置中,但让管理员用他自己的值填充它。我认为这很简单xdt:Transform="Insert" xdt:Locator="XPath(count(/configuration/connectionStrings)=0)"
(如果不存在,则添加一个 cs 配置部分)但显然不是。
asp.net - 如何在 Visual Studio 中使用配置转换强制替换元素?
我们知道 Visual Studio 有这个很棒的功能可以在发布时转换 Web.config。所以我们可以在 Web.Release.config 中使用类似下面的内容来替换 Web.config 中的原始值:
网络配置:
Web.Release.config:
只要您在转换配置中没有错字,这一切都很好。因此,例如,如果您的转换配置中有以下行:
然后“SomeKey”项不会被替换,因为转换将找不到密钥,并且会静默打印此警告:
问题是,在某些情况下,例如,如果您更改主 Web.config 中的密钥而忘记在 Web.Release.config 中更改它,那么当您发布时,您很可能没有阅读发布输出消息并且您错过了警告,这可能会导致灾难,因为您的应用程序中将使用 Debug 值而不是 Release 值。
所以问题是,当您在 Web.Release.config 中定义转换时,是否有办法指示必须替换给定项目,如果找不到密钥,则抛出和 ERROR 而不是 WARNING并基本上以一些错误代码退出发布?
.net - web.config 转换 - appSettings 节点不转换
我有想要在多个 Web 应用程序之间共享的 appSettings。因此,在我的解决方案的根级别,我创建了一个文件夹“Common ConfigSettings”。在这里,我拥有所有共享的常见 appSettings。然后在不同的网络项目中,我添加了一个指向这个文件的链接并引用了常见的设置,比如..
这在调试时运行良好。现在,当我需要发布时,“链接”文件被复制到相关 Web 项目的目录中,因此文件路径现在需要更改,指向与项目 web.config 相同的目录。但我无法让转换工作。
我正在尝试在我的 web.Config 中转换 appSettings 上的“文件”属性。但 id 似乎不起作用。
原始 web.config
转换
然后当我点击预览变换
asp.net-mvc - 防止部署转换文件
我正在使用一个 asp.net mvc web 应用程序,该应用程序使用 web 转换文件来转换 web.config 和其他配置文件。这很好用。
我想做的一个改进是,当应用程序部署到环境中时,所有的转换文件也会被部署,例如。质量保证、开发、生产等
在 Web 转换中,是否有任何简单的方法可以阻止这种情况并确保它们不会被部署?
visual-studio-2012 - 转换此节点的正确 xdt:Locator 参数是什么?
我的 app.config 文件中有以下内容。我正在使用 Slow Cheetah,只想替换 configuration/entityFramework/defaultConnectionFactory/parameters/parameter 以便它指向差异服务器。即价值数据源=一些服务器....
我在 app.config.release 中尝试过以下操作,但无济于事。
也尝试xdt:Locator="Match(parameter)"
过xdt:Locator="XPath(parameter)
还有更多,但无法正常工作。
msbuild - MSBuild - 我进行部署时如何强制“AfterBuild”目标?
我有以下设置:ASP.Net MVC .Net 4.0 解决方案,其中包含 5 个项目,以及几个解决方案配置(Site1-Stage、Site1-Live、Site2-Stage等)。原因很简单——我们将相同的代码库部署到具有不同配置设置的多个服务器。
为了管理这些配置,我使用了 Troy Hunt 在他的You're deploy it wrong!TeamCity、Subversion 和 Web 部署第 1 部分:配置转换文章。简而言之 - 我的 SVN 存储库中没有web.config ,而是在项目AfterBuild目标中有Web.Base.Config、Web.Site1-Stage.Config等和XmlTransformation任务。在构建期间,根据所选配置生成所需的web.config :
问题来了:当我像这样执行 MSBuild 时:
一切顺利,为Site1-Stage配置正确生成了 web.config。但是,如果我运行此命令:
我收到以下错误:
“MySolution.sln”(重建目标)(1)->“MySolution\MyWebProj.csproj”(重建目标)(3)->(PreTransformWebConfig 目标)-> C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio \v10.5\Web\Microsoft.Web.Publishing.targets(1399,5):错误:将文件 Web.config 复制到 obj\Site1-Stage\TransformWebConfig\original\Web.config 失败。找不到文件“Web.config”。[我的解决方案\MyWebProj.csproj]
我尝试将“AfterBuild”目标显式添加到 MSBuild 命令行中:
但它导致了同样的错误。
为什么我需要这个:这是一个非常孤立的示例,实际上我正在尝试从 TeamCity CI 服务器设置自动发布。我认为如果我在当前发布步骤之前使用“Visual Studio (sln)”运行程序添加新的构建步骤,那将起作用,它将首先重建项目(并生成 web.config) - 然后发布。但是,我有很多发布步骤(现在大约 20 个),我想避免这种情况。我的理解是“发布”过程将构建作为其中的一部分,所以我想“重用”它。
问题是:我应该如何修改我的 MSBuild 命令行以强制进行配置转换?
谢谢你。
asp.net - 使用 web.config 转换,如何在顶部注入规范的 url 规则?
在 ASP.Net 项目中,对于发布版本的 Web.Config(使用 Web.Release.Config 转换文件),如何在重写部分注入规范的 url 规则?
appharbor - AppHarbor 自定义配置文件转换
我有一个包含一些 saml 信息的 xml 文件 saml.config。该信息需要在发布版本中进行转换,以包含生产 URL,而不是开发和暂存 URL。在我的开发和登台环境中,转换发生得很完美,在发布环境中,转换不会发生。
我一直在尝试http://webconfigtransformationtester.apphb.com/来测试转换,但它们没有被应用,但同样,VS 完美地应用了它们。
基础 saml.config 文件:
转换文件:
结果应该将服务提供者 AssertionConsumerServiceUrl 中的 localhost url 替换为 ***********.com 版本,但它没有
为什么变换测试仪不应用变换?
编辑:
我应该补充一点,我使用 SlowCheetah addin / nuget 包在本地和我们的暂存环境中处理转换。
考虑文档(http://support.appharbor.com/kb/getting-started/managing-environments)状态
具有相应 .release.config 文件的所有 .config 文件都支持配置文件转换。
我假设 AppHarbor 可以在没有 SlowCheetah 的情况下做到这一点。但同样,WebConfigTransformTester 工具不应用此转换。
所以问题仍然是,我该如何应用这种转换?我可以在 AppHarbor 中使用 SlowCheetah 吗?
编辑:
经过进一步调查,AppHarbor 似乎也没有将转换应用于 Web.Config。
我的配置:
Web.Config 中的 AppSettings
注意环境设置为“开发”
发布改造:
注意环境被替换为“发布”
AppHarbor 环境:
部署到 AppHarbor 后,我下载了构建并检查了 Web.Config,它仍然在“开发”处具有环境设置。
编辑:
我向我的一个控制器添加了一个动作,它读取环境 AppSetting 并输出到视图,令我惊讶的是它是“发布”!!!
那么给了什么?“下载构建”内容没有适当的转换,但是当请求发生时呢?AppHarbor 何时应用转换?它是在运行时而不是在构建期间吗?
编辑:
从 AppHarbor 人员那里得知,转换发生在实际发布时,因此即使构建有一个“已发布网站”文件夹,它仍然不是发布操作的最终输出。
谢谢,乔
visual-studio - Nuget 包在自定义 xml 文件而不是 web/app 配置文件中添加它们的设置
通过一些自定义逻辑,我在我的 Asp Mvc 4 应用程序中为我的 Web 配置添加了一个模板。当我需要修改 web.config 文件时,我正在为其编辑模板文件,并且当我运行应用程序时,更改会在 web 配置文件中被替换。问题是,当我通过 nuget 添加需要修改 Web 配置文件的包时,我丢失了这些设置,因为所有内容都从我的模板文件中覆盖。有没有办法以某种方式强制 nuget 包修改一些自定义 xml 文件而不是原始的 web 配置文件。例如,修改mytemplate.xml
而不是web.config.xml
.
我在这个领域很新,找不到我的问题的解决方案。据我了解,需要修改 web.config 文件的包带有web.config.transform
合并所需字段的文件,我唯一的解决方案是将包添加到我的 web 配置文件中的设置手动替换到模板文件中。还有其他解决方案吗?谢谢!