【问题标题】:How to set environment variable for C# debugging如何为 C# 调试设置环境变量
【发布时间】:2013-01-14 09:21:33
【问题描述】:

我正在尝试将托管和本机 dll 加载到我的 C# 应用程序中。我想设置 PATH 环境变量,以便应用程序可以找到要加载的 dll。在 C++ 中这很容易,但我如何在 C# 项目中做到这一点? (顺便说一下,我使用的是 VS2012、.NET、WPF)

【问题讨论】:

  • 请注意,如果您使用 SetEnvironmentVariable()(如下面的 squillman 正确回答),则只有调用 SetEnvironmentVariable() 的进程和调用进程本身启动的任何进程才能看到该环境变量.

标签: c# debugging dll environment-variables path-variables


【解决方案1】:

使用Environment.SetEnvironmentVariable()

string currentPath = Environment.GetEnvironmentVariable("path");
Environment.SetEnvironmentVariable("path",currentPath + ";c:\path_to_libraries");

请记住,这仅适用于当前流程。如果要设置持久环境变量(用户或机器范围),请使用 Environment.SetEnvironmentVariable(string, string, EnvironmentVariableTarget) 重载。 See here 供参考。

【讨论】:

  • 我只需要它来进行调试,而不是在运行时。可以通过项目设置来实现吗?
  • 你可以伪造它。查看项目设置中的调试选项卡。有一个“启动操作”设置,您可以在其中选择“启动外部程序”。我想你可以在那里指定一个批处理文件。在该批处理文件中,您可以适当地设置 PATH,然后从 /debug 输出文件夹运行您的程序。 (在设置和批处理文件本身中计算出要使用的确切相对路径可能会很繁琐。继续摆弄直到它起作用。;)
  • 您还可以在引用文件的项目的属性中设置引用路径。不过,我相信这也超出了调试范围......
【解决方案2】:

小心这件事。我会明确设定目标,例如 System.Environment.SetEnvironmentVariable("windir", System.Environment.GetEnvironmentVariable("SystemRoot"), EnvironmentVariableTarget.User);

当我没有设置目标时,我的 Windows 会话发生了非常奇怪的事情,需要我注销并登录甚至重新启动。因此,除非此更改确实是在机器或流程级别上,否则不要假设默认的结果会令人满意

【讨论】:

    猜你喜欢
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-24
    • 2011-02-13
    相关资源
    最近更新 更多