C# 设置Visual Studio';调试项目的环境变量
我正在为VisualStudio创建一个扩展,请求的功能之一是它能够将一个环境变量更改为几个选项中的一个,调试完成后将由正在开发的应用程序继承 我试过以下方法C# 设置Visual Studio';调试项目的环境变量,c#,visual-studio,C#,Visual Studio,我正在为VisualStudio创建一个扩展,请求的功能之一是它能够将一个环境变量更改为几个选项中的一个,调试完成后将由正在开发的应用程序继承 我试过以下方法 Environment.SetEnvironmentVariable("foo", "bar", EnvironmentVariableTarget.Process); Environment.SetEnvironmentVariable("foo", "bar", EnvironmentVariableTarget.Machine);
Environment.SetEnvironmentVariable("foo", "bar", EnvironmentVariableTarget.Process);
Environment.SetEnvironmentVariable("foo", "bar", EnvironmentVariableTarget.Machine);
但是,尽管变量仍然存在,但一旦我点击run,它似乎不会将其传递给程序
我正在寻找其他方法来尝试,我不介意它们是否有黑客行为
编辑:为了澄清,这个过程应该对正在调试的(任意)程序透明。它还必须是编程解决方案您可以使用编译常量。定义一个负责检索变量的类:
public class MyEnvironment {
public string SomeVariable{
get{
#if DEBUG
return "bar";
#else
return Environment.GetEnvironmentVariable("foo");
#endif
}
}
}
您还可以使用某种IOC注入变量提供程序实例。要么是读取环境的“生产”版本,要么是带有硬编码值的调试版本。我不知道是否可以通过编程更改设置,但我想看看这个问题:
如果您自己启动进程,则传递给
process.Start()
的StartInfo
对象有一个EnvironmentVariables
属性,您也可以研究使用该属性。我猜您正在调试的程序为什么没有获得环境变量。进程在进程启动时读取环境变量。如果您正在开发.NET应用程序Visual Studio,请创建一个*.vshost.exe进程,以加快调试启动。因此,VisualStudio不会在开始调试时创建并启动新进程,结果是不会读取环境变量
相反,您可以使用来执行所需的。终止.vshost.exe进程。感谢您的启发,您可以禁用调试部分下项目属性中的*.vshost.exe内容。