标签: web-config-transform

如何在使用webdeploy时将web.config设置替换为当前日期?

我正在使用web.config转换来将设置替换为所选解决方案配置的设置.但是,我想添加一个存储发布过程的日期时间的设置.这样做的原因是能够为我的客户显示"上次发布".

使用配置转换,有没有办法用当前日期替换设置?

c# asp.net web-config-transform webdeploy

7
推荐指数
1
解决办法
1434
查看次数

我可以在NuGet包中包含web.release.config.transform吗?

我们使用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)

有任何想法吗?

web-config web-config-transform nuget slowcheetah

7
推荐指数
0
解决办法
1037
查看次数

使用web.config转换在根元素上设置多个属性

在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)

只要根元素上有多个属性,它就会失败

.net asp.net web-config web-deployment web-config-transform

7
推荐指数
2
解决办法
5944
查看次数

在Web.Config Transform中指定Machine Name

我正在使用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)财产?

msbuild web-config web-config-transform

7
推荐指数
1
解决办法
1435
查看次数

自定义部分的Web配置转换

我的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

7
推荐指数
1
解决办法
5458
查看次数

使用configSource转换包含的配置文件

这个问题有点像两个人.在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

7
推荐指数
1
解决办法
2303
查看次数

如何让TFS 2010 Builds使用新的构建配置和转换Web配置

我有一种情况,我使用TFS构建将MVC站点部署到各种环境.我想使用带有TFS构建的web.config转换来确保连接字符串之类的内容对于每个环境都是正确的,而不必手动编辑Web配置.

我为Dev,QA和RC创建了新配置(使用VS2010中的配置管理器).我也有适当的转换Web.Dev.config等,但我不知道如何使用我创建的TFS构建定义.

有任何想法吗??

编辑:我的小学生错误(没有针对男生的进攻,大多数会更好!)我没有检查我的解决方案文件,所以TFS不知道我已经创建了新的构建配置.

web-config tfs2010 web-config-transform

6
推荐指数
1
解决办法
5242
查看次数

混合web.config转换和Parameters.xml,或者其他东西

我一直在使用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-config-transform webdeploy

6
推荐指数
1
解决办法
1693
查看次数

如何在VS 2013中为transform .config中的<rewrite>启用IntelliSense?

我决定将一些重写规则移到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

6
推荐指数
1
解决办法
1534
查看次数

如何避免在服务器上部署 *.&lt;Environment&gt;.config 转换

我正在使用 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

6
推荐指数
1
解决办法
1162
查看次数