C# 如何在ASP.NET服务器的web.config文件中使用Azure管道中设置的环境变量?
我打算在ASP.NET的C# 如何在ASP.NET服务器的web.config文件中使用Azure管道中设置的环境变量?,c#,asp.net,azure,azure-devops,web-config,C#,Asp.net,Azure,Azure Devops,Web Config,我打算在ASP.NET的web.config文件中使用Azure管道中的以下环境变量: <connectionStrings> <add name="ApplicationDbContext" connectionString="metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string
web.config
文件中使用Azure管道中的以下环境变量:
<connectionStrings>
<add name="ApplicationDbContext" connectionString="metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string="Data Source=tcp:app-$(DeploymentEnvironment).database.windows.net,1433;Initial Catalog=app-db;Persist Security Info=False;User ID=$(DeploymentDBUserName);Password=$(DeploymentDBPassword);Encrypt=True;Application Name=EntityFramework"" providerName="System.Data.EntityClient" xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
<add name="ServiceBus" connectionString="Endpoint=sb://app-$(DeploymentEnvironment)-bus.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=$(ServiceBusAccessKey)" xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
<add name="Cache" connectionString="app-$(DeploymentEnvironment)-cache.redis.cache.windows.net:6380,password=$(CachePassword),ssl=True,abortConnect=False,allowAdmin=True" xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
<connectionStrings />
有人能帮忙吗?我举了一个如何替换YAML文件中的值的例子,但是XML的想法是一样的。基本上,在我的主分支(触发构建管道)上,我推送了一些字符串,而不是值,我将在bash脚本中用变量替换这些字符串。一个例子如下:
- task: Bash@3
inputs:
targetType: 'inline'
script: |
sed -i "s%AzureWebJobsStorage_Value%$AZUREWEBJOBSSTORAGE_VALUE%g" "deploy.yml"
sed -i "s%SPEECH_SERVICE_KEY_Value%$SPEECH_SERVICE_KEY_VALUE%g" "deploy.yml"
sed -i "s%SPEECH_REGION_Value%$SPEECH_REGION_VALUE%g" "deploy.yml"
sed -i "s%GPT2SERVICE_ENDPOINT_Value%$GPT2SERVICE_ENDPOINT_VALUE%g" "deploy.yml"
sed -i "s%TRANSLATOR_KEY_Value%$TRANSLATOR_KEY_VALUE%g" "deploy.yml"
sed -i "s%TranslatorEndpoint_Value%$TRANSLATORENDPOINT_VALUE%g" "deploy.yml"
例如,“TranslatorEndpoint_Value”是我在构建解决方案的下一步之前放置I yaml的字符串,并用变量$TranslatorEndpoint_Value替换它
我相信可能还有其他的解决办法,但这就是我在这些情况下所做的。我希望这有帮助
您可以使用扩展任务或任务将配置文件中的正则表达式替换为管道变量
首先搜索并安装正则表达式查找和替换扩展(或
RegEx匹配并替换组织中的任务
)。然后添加任务,用管道中定义的变量替换属性
您还可以使用将配置文件中的属性替换为azure管道环境变量
希望以上帮助 您可以在Azure管道中使用名为“替换令牌”的工具
例如,您有一个环境变量:
var_1=某个值
然后,您的标记化配置文件将如下所示:
<connectionStrings>
<add name="ApplicationDbContext" connectionString="con-#{var_1}#" xdt:Transform="SetAttributes(connectionString)" xdt:Locator="Match(name)"/>
<connectionStrings />
转换后,您将获得:
<connectionStrings>
<add name="ApplicationDbContext" connectionString="con-some_value" xdt:Transform="SetAttributes(connectionString)" xdt:Locator="Match(name)"/>
<connectionStrings />
Hi@Sundas Riasat下面是我的答案,如果有任何问题,请告诉我。谢谢!非常好和简单的建议!