我正在使用web.config转换来将设置替换为所选解决方案配置的设置.但是,我想添加一个存储发布过程的日期时间的设置.这样做的原因是能够为我的客户显示"上次发布".
使用配置转换,有没有办法用当前日期替换设置?
我们使用SlowCheetah配置转换来管理配置,所以在我的每个网络应用程序中我都有:
> Web.config
> Web.debug.config
> Web.release.config
Run Code Online (Sandbox Code Playgroud)
我想包括appSetting在将被添加到时可以安装包(然后Web.release.config文件NuGet包变换元件应用时,该项目在Release模式实际上是打包)
按照用于web.config通过使用web.config.transform文件转换实际文件的方法,我尝试将一个NuGet\Content\web.release.config.transform文件添加到我的NuGet包中,如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<appSettings>
<add key="apiUsername" value="my_user" xdt:Transform="Replace" xdt:Locator="Match(key)" />
<add key="apiPassword" value="my_pass" xdt:Transform="Replace" xdt:Locator="Match(key)" />
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
不行.web.config文件被转换,但web.*.config文件未被修改:
Attempting to resolve dependency 'NewtonSoft.Json (? 4.5.7)'.
Successfully installed 'Newtonsoft.Json 4.5.7'.
Successfully installed ''MyProject.Package 1.0.7409-unstable'.
Successfully added 'Newtonsoft.Json 4.5.7' to FortKnox.Web.
'web.debug.config' already exists. Skipping...
'web.release.config' already exists. Skipping...
Successfully added 'MyProject.Package 1.0.7409-unstable' to MyThing.Web
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
在visual studio(web.config转换)中,我有一个我想要执行的转换,它在根元素上添加了两个属性.一个attrbute工作(但不是多个).我可以在子元素上设置多个属性.我已尝试使用和不指定属性名称的SetAttributes,没有运气.
想法?
例
<element xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xdt:Transform="SetAttributes" attrOne="One" attrTwo="Two">
<children>
<child name="One" xdt:Transform="SetAttributes" attrOne="One" attrTwo="Two" />
</children>
</element>
Run Code Online (Sandbox Code Playgroud)
期望的效果
<element attrOne="One" attrTwo="Two">
<children>
<child name="One" attrOne="One" attrTwo="Two" />
</children>
</element>
Run Code Online (Sandbox Code Playgroud)
"element"部分实际上是web.config文件的自定义部分......就像这样:
<configuration>
... <element configSource="App_Data\element.config" />
Run Code Online (Sandbox Code Playgroud)
这个转换意味着在element.config文件中使用(使用慢速猎豹)
更新 这显然不起作用:
<element xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xdt:Transform="Replace" attrOne="One" attrTwo="Two">
<children>
<child name="One" attrOne="One" attrTwo="Two" />
</children>
</element>
Run Code Online (Sandbox Code Playgroud)
但这样做:
<element xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xdt:Transform="Replace" attrOne="One">
<children>
<child name="One" attrOne="One" attrTwo="Two" />
</children>
</element>
Run Code Online (Sandbox Code Playgroud)
只要根元素上有多个属性,它就会失败
我正在使用Web.config转换来成功创建我的web.config的调试和发布版本 - 这是正常的.
我有兴趣知道是否有一个'机器名'属性来指定我可以在调试URL中使用的当前机器名,而不是硬编码特定的机器名(在这种情况下使用localhost不是一个选项) ,例如
<add name="XrmService" connectionString="http://$(ComputerName):5555/Service.svc" />
Run Code Online (Sandbox Code Playgroud)
使用Web.config转换是否有可用的属性?类似于MSBuild的$(ComputerName)财产?
我的MVC 5应用程序中有许多不同的Web.config用于不同的环境 - 例如Test/Prod
我有适当的网络转换来更改不同环境的值.例如,我的web.config文件中有以下应用程序设置:
<appSettings>
<add key="DevDisplayPanel" value="true" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
然后在我的Web.Test.config和Web.Prod.config中使用Web转换来更改值,如下所示:
<appSettings>
<add key="DevDisplayPanel"
xdt:Transform="Replace"
xdt:Locator="Match(key)"
value="false" />
<appSettings>
Run Code Online (Sandbox Code Playgroud)
但是在我的Web.config中我也有自己的自定义部分,它在<appSettings>部分之外,如下所示:
<myCustomSection>
<serverList>
<add zone="Zone1" url="https://dev-myurl1.com"/>
<add zone="Zone2" url="https://dev-myurl2.com"/>
<add zone="Zone2" url="https://dev-myurl3.com"/>
</serverList>
</myCustomSection>
Run Code Online (Sandbox Code Playgroud)
我的问题是 - 是否可以进行Web转换,以便Test和Prod看起来如下所示:
测试:
<myCustomSection>
<serverList>
<add zone="Zone1" url="https://test-myurl1.com"/>
<add zone="Zone2" url="https://test-myurl2.com"/>
<add zone="Zone2" url="https://test-myurl3.com"/>
</serverList>
</myCustomSection>
Run Code Online (Sandbox Code Playgroud)
PROD:
<myCustomSection>
<serverList>
<add zone="Zone1" url="https://prod-myurl1.com"/>
<add zone="Zone2" url="https://prod-myurl2.com"/>
<add zone="Zone2" url="https://prod-myurl3.com"/>
</serverList>
</myCustomSection>
Run Code Online (Sandbox Code Playgroud) asp.net asp.net-mvc web-config web-config-transform web.config-transform
这个问题有点像两个人.在VS2015中,我的MVC项目有多种不同的构建配置,Test,UAT,Live等.web.config我可以直接右键单击它并选择Add Config Transform为每个构建配置创建转换文件.
如果我有一个外部配置文件,例如Log4Net.config如何配置它以具有相关的转换web.config?这是通过编辑project.csproj文件手动完成的吗?
其次,我有一个web.config文件:
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, Log4net" />
</configSections>
...
<log4net configSource="Log4Net.config" />
</configuration>
Run Code Online (Sandbox Code Playgroud)
当我构建项目时,会web.config自动通过project.csproj文件中的以下AfterBuild目标进行转换:
<Target Name="AfterBuild">
<TransformXml Source="Web.config"
Transform="Web.$(Configuration).config"
Destination="$(OutputPath)\$(AssemblyName).config" />
</Target>
Run Code Online (Sandbox Code Playgroud)
如何Log4Net.config使用相同的配置转换转换包含的文件?我意识到我可以将另一个TransformXml放入AfterBuild目标中,但是这是进行此转换的正确方法,还是我错过了什么?
c# asp.net-mvc web-config visual-studio web-config-transform
我有一种情况,我使用TFS构建将MVC站点部署到各种环境.我想使用带有TFS构建的web.config转换来确保连接字符串之类的内容对于每个环境都是正确的,而不必手动编辑Web配置.
我为Dev,QA和RC创建了新配置(使用VS2010中的配置管理器).我也有适当的转换Web.Dev.config等,但我不知道如何使用我创建的TFS构建定义.
有任何想法吗??
编辑:我的小学生错误(没有针对男生的进攻,大多数会更好!)我没有检查我的解决方案文件,所以TFS不知道我已经创建了新的构建配置.
我一直在使用web.config转换一段时间,以便在我们的一些项目上进行部署.我现在想要实现的是,让Web Deploy的"导入包"屏幕提示检查和更新几个变量,并针对每个环境进行调整.
我知道我可以使用Parameters.xml来引入这些可编辑的变量,但我还没有找到如何为不同的环境目标更新默认值.
考虑以下整洁但非重叠的示例,希望让用户编辑" specialServer "AppSetting,并在为NewEnv目标编译时为其提供不同的默认值:
Parameters.xml中的示例条目:
<parameter name="Special server" description="" tags="" defaultValue="server1-dev.domain">
<parameterEntry kind="XmlFile" scope="\\web.config$" match="/configuration/appSettings/add[@key='specialServer']/@value" />
</parameter>
Run Code Online (Sandbox Code Playgroud)
Web.NewEnv.config的示例转换,为其设置不同的值
<appSettings>
<add key="specialServer"
value="other-server.domain2"
xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)
Web部署中的提示示例:

有关如何更新不同构建目标的默认值的任何建议吗?
谢谢.
我决定将一些重写规则移到web.release.config和web.staging.config文件中,以保持重写规则与我们运行不同配置的环境相关.
IntelliSense不喜欢这个决定,也不会打球,因为:
xdt:转换"属性未声明"
对于<rewrite>元素.
我在这里查看了RuslanY的解决方案,我在这个网站上考虑了几个解决方案,但是他们都没有在使用.NET v4.5的VS 2013中为这个特定问题提供解决方案.我还在这里研究了这篇旧的MSDN帖子,并确保Web.config,Web.Staging.config和Web.Release.config的Schemas属性指向正确的转换模式版本.
似乎唯一的解决方案是编辑DotNetConfig [v] .xsd文件并添加
<xs:anyAttribute namespace="http://schemas.microsoft.com/XML-Document-Transform" processContents="strict"/>
Run Code Online (Sandbox Code Playgroud)
<xs:complexType>在每个<xs:element name="rewrite">元素(和<xs:element name="rewrite">标记本身)中的每个元素的末尾,使它们与具有良好IntelliSense的其他元素一致.
在这种情况下,这是正确的解决方案(因为这些条目尚未存在似乎很奇怪)?有没有更好的方法将这些条目添加到xsd文件中,以便它们不会在VS更新中丢失(因此它们将更容易应用于VS安装)?
或者我应该部署另一种解决方案吗?
xsd web-config web-config-transform .net-4.5 visual-studio-2013
我正在使用 VSTS 在多个环境中进行部署。和往常一样,配置文件上的一些参数需要根据环境而不同,因此我将使用配置转换将其部署到目标环境中。
由于我想要包含稍后应用的配置和转换的包,因此我将构建操作设置为内容:
<Content Include="App_Config\MyConfig.config" />
<Compile Include="App_Config\MyConfig.prod.config">
<DependentUpon>MyConfig.config</DependentUpon>
</Compile>
<Compile Include="App_Config\MyConfig.uat.config">
<DependentUpon>MyConfig.config</DependentUpon>
</Compile>
<Compile Include="App_Config\MyConfig.dev.config">
<DependentUpon>MyConfig.config</DependentUpon>
</Compile>
Run Code Online (Sandbox Code Playgroud)
包正确完成,部署也是如此(MyConfig.config 已根据其运行的环境更改参数)。我的问题是在服务器机器上我也有 MyConfig.*.config 文件。
查看官方文档示例说明(https://docs.microsoft.com/en-us/vsts/pipelines/tasks/transforms-variable-substitution?view=vsts#xml-transformation-example)没有给出任何明确的信息. 这只是“msbuild 会在打包之前完成,而 azure 不会”,但并没有解释如何做到这一点。
编辑:我使用的解决方案。
基本上我无法避免保持工件清洁,因为它们不依赖于环境。因此,在所有发布管道之后,我添加了一个删除文件作业(https://docs.microsoft.com/en-us/vsts/pipelines/tasks/utility/delete-files?view=vsts)以使用以下内容删除所有配置文件参数:
源文件夹:
$(wwwRoot)\
内容:
**\*.Debug.config
**\*.Release.config
**\*.UAT.config
**\*.PROD.config
web-config msdeploy visual-studio web-config-transform azure-devops
web-config ×8
asp.net ×3
asp.net-mvc ×2
c# ×2
webdeploy ×2
.net ×1
.net-4.5 ×1
azure-devops ×1
msbuild ×1
msdeploy ×1
nuget ×1
slowcheetah ×1
tfs2010 ×1
xsd ×1