我怎么能得到环境变量,如果有什么缺失,设置值?
使用系统。环境类。
的方法
var value = System.Environment.GetEnvironmentVariable(variable [, Target])
而且
System.Environment.SetEnvironmentVariable(variable, value [, Target])
会帮你的。
可选参数Target是一个类型为EnvironmentVariableTarget的枚举,它可以是:Machine、Process或User之一。如果省略它,默认目标是目前的过程。
Target
EnvironmentVariableTarget
Machine
Process
User
这将适用于机器设置的环境变量。对于Users,只需更改为User即可。
String EnvironmentPath = System.Environment .GetEnvironmentVariable("Variable_Name", EnvironmentVariableTarget.Machine);
我在使用. net控制台应用程序读取PATH环境变量时遇到了这个问题,并发现使用System.Environment.GetEnvironmentVariable将自动展开环境变量。
我不希望发生这种事……这意味着路径为“%SystemRoot%\system32”的文件夹被重写为“C:\Windows\system32”。为了获得未展开的路径,我必须使用以下方法:
string keyName = @"SYSTEM\CurrentControlSet\Control\Session Manager\Environment\"; string existingPathFolderVariable = (string)Registry.LocalMachine.OpenSubKey(keyName).GetValue("PATH", "", RegistryValueOptions.DoNotExpandEnvironmentNames);
对我来说很管用。
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User);
获取和设置
得到
string getEnv = Environment.GetEnvironmentVariable("envVar");
集
string setEnv = Environment.SetEnvironmentVariable("envvar", varEnv);
我可以使用以下命令来更新环境变量
string EnvPath = System.Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine) ?? string.Empty; if (!string.IsNullOrEmpty(EnvPath) && !EnvPath .EndsWith(";")) EnvPath = EnvPath + ';'; EnvPath = EnvPath + @"C:\Test"; Environment.SetEnvironmentVariable("PATH", EnvPath , EnvironmentVariableTarget.Machine);
如果读取环境变量的目的是重写appset中的值。json或任何其他配置文件,你可以通过EnvironmentVariablesExtensions存档它。
var builder = new ConfigurationBuilder() .AddJsonFile("appSettings.json") .AddEnvironmentVariables(prefix: "ABC_") var config = builder.Build();
根据这个例子,环境的Url是从appsettings.json中读取的。但是当AddEnvironmentVariables(prefix: "ABC_")行被添加到ConfigurationBuilder时,值appsettings. properties将被删除。Json将在环境变量值中被重写。
AddEnvironmentVariables(prefix: "ABC_")
在Visual Studio 2019 -右键单击您的项目,选择属性>通过给它一个名称(如ConnectionString)、类型和值来添加一个新变量。然后在你的代码中这样读:
var sConnectionStr = Properties.Settings.Default.ConnectionString;
这些变量将存储在配置文件(web。Config或app.config),这取决于你的项目类型。下面是它的一个例子:
<applicationSettings> <Testing.Properties.Settings> <setting name="ConnectionString" serializeAs="String"> <value>data source=blah-blah;etc-etc</value> </setting> </Testing.Properties.Settings> </applicationSettings>
环境变量也可以放在应用程序的app.config或web.config文件中,通过它们的名称以百分比为界(%),然后在代码中展开。
app.config
web.config
%
例如,在app.config中:
<connectionStrings> <add name="myConnectionString" connectionString="%DEV_SQL_SERVER_CONNECTION_STRING%" providerName="System.Data.SqlClient" /> </connectionStrings>
然后在代码中:
string connectionStringEnv = ConfigurationManager.AppSettings["myConnectionString"]; string connectionString = System.Environment.ExpandEnvironmentVariables(connectionStringEnv);