72

在类库项目中,我将项目属性的“调试”选项卡上的“启动操作”设置为“启动外部程序”(本例中为NUnit)。我想在这个程序启动的环境中设置一个环境变量。我该怎么做?(这甚至可能吗?)

编辑:

它是一个影响所有 .NET 应用程序的环境变量(COMplus_Version,它设置运行时版本),因此在系统范围内设置它确实不是一种选择。

作为一种解决方法,我只是通过将其设置为 .NET 来强制 NUnit 在正确的 .NET 版本 (2.0) 中启动nunit.exe.config,但不幸的是,这也意味着我的所有 .NET 1.1 单元测试现在也在 .NET 2.0 中运行。我可能应该只制作可执行文件的副本,以便它可以拥有自己的配置文件......

(我保持问题开放(不接受答案),以防有人碰巧发现如何(毕竟它可能对其他目的也有用......))

4

9 回答 9

89

至少在 Visual Studio 2008 和 Visual Studio 2005 中,您可以在项目设置中指定对环境变量的更改。

打开你的项目。转到 Project -> Properties... 在 Configuration Properties -> Debugging 下,编辑“Environment”值以设置环境变量。

例如,如果您想在调试应用程序时将目录“c:\foo\bin”添加到路径中,请将 'Environment' 值设置为“PATH=%PATH%;c:\foo\bin”。

这是设置对话框的屏幕截图

于 2008-09-30T22:24:10.013 回答
11

在 Visual Studio for Mac 和 C# 中,您可以使用:

Environment.SetEnvironmentVariable("<Variable_name>", "<Value>");

但是您将需要以下命名空间

using System.Collections;

你可以用这个检查变量的完整列表:

foreach (DictionaryEntry de in Environment.GetEnvironmentVariables())
            Console.WriteLine("  {0} = {1}", de.Key, de.Value);
于 2017-02-18T22:16:15.210 回答
8

Visual Studio 2003 似乎不允许您为调试设置环境变量。

我在 C/C++ 中所做的是使用_putenv()main()设置任何变量。通常我用 a 包围它以#if defined DEBUG_MODE / #endif确保只有某些版本有它。

_putenv("MYANSWER=42");

我相信你可以使用 os.putenv() 对 C# 做同样的事情,即

os.putenv('MYANSWER', '42');

这些将仅为该 shell 进程设置环境变量,因此是一个临时设置,这正是您要寻找的。

顺便说一句,它很好地使用进程资源管理器 ( http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx ),它是一个 sysinternals 工具。您可以查看给定进程的环境变量副本是什么,因此您可以验证您设置的内容是否就是您得到的内容。

于 2009-07-16T20:52:43.440 回答
4

在 Visual Studio 2019 中,右键单击您的项目,选择Properties. 在项目属性窗口中,选择Debug选项卡。然后,Environment variables将您的环境值从DevelopmenttoProduction或其他环境更改下。对于 .Net Core 和 .Net 5,该属性称为ASPNETCORE_ENVIRONMENT

在此处输入图像描述

于 2021-03-23T09:36:33.817 回答
1

从 NUnit 2.5 开始,您可以使用 /framework 开关,例如:

nunit-console myassembly.dll /framework:net-1.1

这是来自NUnit 的帮助页面

于 2012-02-09T02:43:16.473 回答
1

您可以在属性 > 配置属性 > 调试 > 环境中进行设置 在此处输入图像描述

于 2020-04-21T10:50:37.890 回答
0

设置一个可以调用的批处理文件。将路径传递给批处理文件,并让批处理文件设置环境变量,然后调用 NUnit。

于 2008-09-19T08:53:19.263 回答
0

如果您不能使用 bat 文件来设置环境,那么您唯一可能的选择是设置系统范围的环境变量。你可以通过这样做找到这些

  1. 右键单击“我的电脑”
  2. 选择属性
  3. 选择“高级”选项卡
  4. 点击“环境变量”按钮
  5. 在“系统变量”部分中,添加所需的新环境变量
  6. 一路“好”接受你的修改

我不知道您是否必须重新启动 Visual Studio,但似乎不太可能。高温高压

于 2008-09-19T13:16:34.847 回答
0

由于环境是从父进程继承的,因此您可以为 Visual Studio 编写一个加载项,在执行启动之前修改其环境变量。我不确定将其放入您的流程中是否容易。

于 2008-10-02T04:49:25.320 回答