Reputation: 81803
On a class library project, I set the "Start Action" on the Debug tab of the project properties to "Start external program" (NUnit in this case). I want to set an environment variable in the environment this program is started in. How do I do that? (Is it even possible?)
EDIT:
It's an environment variable that influences all .NET applications (COMplus_Version, it sets the runtime version) so setting it system wide really isn't an option.
As a workaround I just forced NUnit to start in right .NET version (2.0) by setting it in nunit.exe.config
, though unfortunately this also means all my .NET 1.1 unit tests are now also run in .NET 2.0. I should probably just make a copy of the executable so it can have its own configuration file...
(I am keeping the question open (not accepting an answer) in case someone does happen to find out how (it might be useful for other purposes too after all...))
Upvotes: 105
Views: 352696
Reputation: 325
In Visual Studio for Mac and C# you can use:
Environment.SetEnvironmentVariable("<Variable_name>", "<Value>");
But you will need the following namespace
using System.Collections;
you can check the full list of variables with this:
foreach (DictionaryEntry de in Environment.GetEnvironmentVariables())
{
Console.WriteLine(" {0} = {1}", de.Key, de.Value);
}
Upvotes: 20
Reputation: 117
I prefer to keep all such definitions in the make files, i.e. in the .*proj
or .props
- because these are under SCM.
I avoid the VS-Gui-Property-Dialogs. A lot of the config you write there goes into some .user
, .suo
or so, which is usually not under SCM.
E.g. in case of environment variables you could write (using a text editor) something like the following in your .vcxproj
:
<PropertyGroup>
<LocalDebuggerEnvironment Condition="'$(Configuration)'=='Debug'">
ANSWER=42
RUNTIME_DIR="$(g_runtime_dir)"
COLOR=octarin
</LocalDebuggerEnvironment>
</PropertyGroup>
NOTE that you can use MSBuild Conditions and other build properties to define the environment variables.
NOTE: this works for me with VS2013 and VS2019. I think it is the same for other VS + MSBuild versions.
Upvotes: 0
Reputation: 31
If you are using VS 2019, Go to Project-> Properties->Debug. check here
Add key and value for your variables. Then it is done. Check launchSettings.json in properties folder you should see your variable there.
Upvotes: 3
Reputation: 171
In VS 2022 for .NET 5 and 6 you can set environment variables under properties of project -> Debug -> under General click on 'Open debug launch profiles UI' and scroll down to 'Environment variables'
Upvotes: 17
Reputation: 21
In Visual Studio 2022, go to solution explorer, right click to project file. Then, click on the Debug link at the left side. Then, click on the Open debug and launch profiles UI. Then, you can add new variables into the field in Environment Variables section. Environment Variables
Upvotes: 2
Reputation: 2327
In Visual Studio 2019 right-click your project, choose Properties
. In the project properties window, select the Debug
tab. Then, under Environment variables
change the value of your environment from Development
to Production
or other environments. For .Net Core and .Net 5 the property is called ASPNETCORE_ENVIRONMENT
.
Upvotes: 29
Reputation: 313
You can set it at Property > Configuration Properties > Debugging > Environment
Upvotes: -2
Reputation: 101494
In Visual Studio 2008 and Visual Studio 2005 at least, you can specify changes to environment variables in the project settings.
Open your project. Go to Project -> Properties... Under Configuration Properties -> Debugging, edit the 'Environment' value to set environment variables.
For example, if you want to add the directory "c:\foo\bin" to the path when debugging your application, set the 'Environment' value to "PATH=%PATH%;c:\foo\bin".
Upvotes: 109
Reputation:
Visual Studio 2003 doesn't seem to allow you to set environment variables for debugging.
What I do in C/C++ is use _putenv()
in main()
and set any variables. Usually I surround it with a #if defined DEBUG_MODE / #endif
to make sure only certain builds have it.
_putenv("MYANSWER=42");
I believe you can do the same thing with C# using os.putenv(), i.e.
os.putenv('MYANSWER', '42');
These will set the envrironment variable for that shell process only, and as such is an ephemeral setting, which is what you are looking for.
By the way, its good to use process explorer (http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx), which is a sysinternals tool. You can see what a given process' copy of the environment variables is, so you can validate that what you set is what you got.
Upvotes: 12
Reputation: 62397
As environments are inherited from the parent process, you could write an add-in for Visual Studio that modifies its environment variables before you perform the start. I am not sure how easy that would be to put into your process.
Upvotes: 0
Reputation: 29399
Set up a batch file which you can invoke. Pass the path the batch file, and have the batch file set the environment variable and then invoke NUnit.
Upvotes: 0
Reputation: 35135
Starting with NUnit 2.5 you can use /framework switch e.g.:
nunit-console myassembly.dll /framework:net-1.1
This is from NUnit's help pages.
Upvotes: 2
Reputation: 10182
If you can't use bat files to set up your environment, then your only likely option is to set up a system wide environment variable. You can find these by doing
I don't know if you'd have to restart visual studio, but seems unlikely. HTH
Upvotes: -2