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

编辑:

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

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

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

有帮助吗?

解决方案

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

打开您的项目。转到项目 -> 属性...在“配置属性”->“调试”下,编辑“环境”值以设置环境变量。

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

Here

其他提示

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

我在 C/C++ 中所做的是使用 _putenv()main() 并设置任何变量。通常我用一个围绕它 #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 工具。您可以查看给定进程的环境变量副本是什么,因此您可以验证您设置的内容是否是您获得的内容。

在 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);

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

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

这是来自 NUnit 的帮助页面.

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

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

我不知道您是否需要重新启动 Visual Studio,但似乎不太可能。华泰

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top