Return to site

C Check If In Dev Mode

broken image


How do I debug using Dev-C? First, make sure you are using a project. Then go to Project Options - Compiler - Linker and set Generate debugging information to 'yes', and make sure you are not using any optimization options (they're not good for debug mode). Also check the Parameters tab, make sure you don't have any optimization options.

-->

Things not working the way you expected?Look through this page of frequently asked questions.Also check out the Known issues topic and the Developing Universal Windows apps forum.

Why aren't my games and apps working?

If your games and apps aren't working, or if you don't have access to the store or to Live services, you are probably running in Developer Mode.To figure out which mode you're currently in, press the Home button on your controller. If this takes you to Dev Home instead ofthe retail Home experience, you're in Developer Mode. If you want to play games, you can open Dev Home and switch back to Retail Mode by using the Leave developer mode button.

Why can't I connect to my Xbox One using Visual Studio?

Start by verifying that you are running in Developer Mode, and not in Retail Mode.You cannot connect to your Xbox One when it is in Retail Mode.To figure out which mode you're currently in, press the Home button on your controller. If you see Gold/Live content instead of Dev Home,you're in Retail Mode and you need to run the Dev Mode Activation app to switch to Developer Mode.

Note

You must have a user signed in to deploy an app.

For more information, see Fixing deployment failures later on this page.

How do I switch between Retail Mode and Developer Mode?

Follow the Xbox One Developer Mode Activation instructions to understand more about these states.

How do I know if I am in Retail Mode or Developer Mode?

Follow the Xbox One Developer Mode Activation instructions to understand more about these states.

To figure out which mode you're currently in, press the Home button on your controller.

  • If this takes you to Dev Home, you're in Developer Mode.
  • If you see Gold/Live content, you're in Retail Mode.

Will my games and apps still work if I activate Developer Mode?

Yes, you can switch from Developer Mode to Retail Mode, where you can play your games.For more information, see the Xbox One Developer Mode Activation page.

Can I develop and publish x86 apps for Xbox?

Xbox no longer supports x86 app development or x86 app submissions to the store.

Will I lose my games and apps or saved changes?

If you decide to leave the Developer Program, you won't lose your installed games and apps.In addition, as long as you were online when you played them, your saved games are all saved on your Live account cloud profile, so you won't lose them.

How do I leave the Developer Program?

See the Xbox One Developer Mode Deactivation topic for details about how to leave the Developer Program.

I sold my Xbox One and left it in Developer Mode. How do I deactivate Developer Mode?

If you no longer have access to your Xbox One, you can deactivate it in Windows Partner Center.For details, see the Deactivate your console using Partner Center section in the Xbox One Developer Mode Deactivation topic.

I left the Developer Program using Partner Center but I'm in still Developer Mode. What do I do?

Start Dev Home and select the Leave developer mode button.This will restart your console in Retail Mode.

Can I publish my app?

You can publish apps through Partner Center if you have a developer account. UWP apps created and tested on a retail Xbox One console will go through the same ingestion, review, and publication process that Windows conducts today, with additional reviews to meet today's Xbox One standards.

Can I publish my game?

You can use UWP and your Xbox One in Developer Mode to build and test your games on Xbox One. To publish UWP games, you must register with ID@XBOX or be part of the Xbox Live Creators Program. For more info, see Developer Program Overview.

Will the standard Game engines work?

Check out the Known issues page for this release.

What capabilities and system resources are available to UWP games on Xbox One?

For information, see System resources for UWP apps and games on Xbox One.

If I create a DirectX 12 UWP game, will it run on my Xbox One in Developer Mode?

For information, see System resources for UWP apps and games on Xbox One.

Will the entire UWP API surface be available on Xbox?

Check out the Known issues page for this release.

Fixing deployment failures

If you can't deploy your app from Visual Studio, these steps may help you fix the problem.If you get stuck, ask for help on the forum.

Note

You must have a user signed in to deploy an app. If you receive a 0x87e10008 error message, make sure you have a user signed in and try again.

If Visual Studio cannot connect to your Xbox One:

  1. Make sure that you are in Developer Mode (discussed earlier on this page).

  2. Make sure that you have set up your development PC correctly. Did you follow all of the directions in Getting started with UWP app development on Xbox One?

  3. If you haven't yet, read through the Development environment setup topic and the Introduction to Xbox One tools topic.

  4. Make sure that you can 'ping' your console IP address from your development PC.

Note

In order to get the best deployment performance, we recommend that you use a wired connection to your console.

  1. Make sure that you are using the Universal (Unencrypted Protocol) in the Authentication drop-down list on the Debug tab. For more details, see Development environment setup.

If I'm building an app using HTML/JavaScript, how do I enable Gamepad navigation?

TVHelpers is a set of JavaScript and XAML/C# samples and libraries to help you build great Xbox One and TV experiences in JavaScript and C#.TVJS is a library that helps you build premium UWP apps for Xbox One. TVJS includes support for automatic controller navigation, rich media playback, search, and more.You can use TVJS with your hosted web app just as easily as with a packaged web UWP app with full access to the Windows Runtime APIs.

For more information, see the TVHelpers project and the project wiki.

See also

-->

By Rick Anderson and Kirk Larkin

C Check If In Dev Mode Windows 10

ASP.NET Core configures app behavior based on the runtime environment using an environment variable.

View or download sample code (how to download)

Environments

To determine the runtime environment, ASP.NET Core reads from the following environment variables:

  1. ASPNETCORE_ENVIRONMENT when ConfigureWebHostDefaults is called. The default ASP.NET Core web app templates call ConfigureWebHostDefaults. The ASPNETCORE_ENVIRONMENT value overrides DOTNET_ENVIRONMENT.

IHostEnvironment.EnvironmentName can be set to any value, but the following values are provided by the framework:

  • Development : The launchSettings.json file sets ASPNETCORE_ENVIRONMENT to Development on the local machine.
  • Production : The default if DOTNET_ENVIRONMENT and ASPNETCORE_ENVIRONMENT have not been set.

The following code:

  • Calls UseDeveloperExceptionPage when ASPNETCORE_ENVIRONMENT is set to Development.
  • Calls UseExceptionHandler when the value of ASPNETCORE_ENVIRONMENT is set to Staging, Production, or Staging_2.
  • Injects IWebHostEnvironment into Startup.Configure. This approach is useful when the app only requires adjusting Startup.Configure for a few environments with minimal code differences per environment.
  • Is similar to the code generated by the ASP.NET Core templates.

The Environment Tag Helper uses the value of IHostEnvironment.EnvironmentName to include or exclude markup in the element:

The About page from the sample code includes the preceding markup and displays the value of IWebHostEnvironment.EnvironmentName.

On Windows and macOS, environment variables and values aren't case-sensitive. Linux environment variables and values are case-sensitive by default.

Create EnvironmentsSample

The sample code used in this document is based on a Razor Pages project named EnvironmentsSample.

The following code creates and runs a web app named EnvironmentsSample:

When the app runs, it displays some of the following output:

Development and launchSettings.json

The development environment can enable features that shouldn't be exposed in production. For example, the ASP.NET Core templates enable the Developer Exception Page in the development environment.

The environment for local machine development can be set in the PropertieslaunchSettings.json file of the project. Environment values set in launchSettings.json override values set in the system environment.

The launchSettings.json file:

  • Is only used on the local development machine.
  • Is not deployed.
  • contains profile settings.

The following JSON shows the launchSettings.json file for an ASP.NET Core web projected named EnvironmentsSample created with Visual Studio or dotnet new:

The preceding markup contains two profiles:

  • IIS Express: The default profile used when launching the app from Visual Studio. The 'commandName' key has the value 'IISExpress', therefore, IISExpress is the web server. You can set the launch profile to the project or any other profile included. For example, in the image below, selecting the project name launches the Kestrel web server.

  • EnvironmentsSample: The profile name is the project name. This profile is used by default when launching the app with dotnet run. The 'commandName' key has the value 'Project', therefore, the Kestrel web server is launched.

The value of commandName can specify the web server to launch. commandName can be any one of the following:

  • IISExpress : Launches IIS Express.
  • IIS : No web server launched. IIS is expected to be available.
  • Project : Launches Kestrel.

The Visual Studio project properties Debug tab provides a GUI to edit the launchSettings.json file. Changes made to project profiles may not take effect until the web server is restarted. Kestrel must be restarted before it can detect changes made to its environment.

The following launchSettings.json file contains multiple profiles:

Profiles can be selected from Visual Studio or using dotnet run --launch-profile .

Warning

launchSettings.json shouldn't store secrets. The Secret Manager tool can be used to store secrets for local development.

When using Visual Studio Code, environment variables can be set in the .vscode/launch.json file. The following example sets several Host configuration values environment variables:

The .vscode/launch.json file is only used by Visual Studio Code.

Production

The production environment should be configured to maximize security, performance, and application robustness. Some common settings that differ from development include:

  • Caching.
  • Client-side resources are bundled, minified, and potentially served from a CDN.
  • Diagnostic error pages disabled.
  • Friendly error pages enabled.
  • Production logging and monitoring enabled. For example, using Application Insights.

Set the environment

It's often useful to set a specific environment for testing with an environment variable or platform setting. If the environment isn't set, it defaults to Production, which disables most debugging features. The method for setting the environment depends on the operating system.

When the host is built, the last environment setting read by the app determines the app's environment. The app's environment can't be changed while the app is running.

The About page from the sample code displays the value of IWebHostEnvironment.EnvironmentName.

Azure App Service

To set the environment in Azure App Service, perform the following steps:

  1. Select the app from the App Services blade.
  2. In the Settings group, select the Configuration blade.
  3. In the Application settings tab, select New application setting.
  4. In the Add/Edit application setting window, provide ASPNETCORE_ENVIRONMENT for the Name. For Value, provide the environment (for example, Staging).
  5. Select the Deployment slot setting check box if you wish the environment setting to remain with the current slot when deployment slots are swapped. For more information, see Set up staging environments in Azure App Service in the Azure documentation.
  6. Select OK to close the Add/Edit application setting window.
  7. Select Save at the top of the Configuration blade.

Azure App Service automatically restarts the app after an app setting is added, changed, or deleted in the Azure portal.

Windows

Environment values in launchSettings.json override values set in the system environment.

To set the ASPNETCORE_ENVIRONMENT for the current session when the app is started using dotnet run, the following commands are used:

Command prompt

PowerShell

The preceding command sets ASPNETCORE_ENVIRONMENT only for processes launched from that command window.

To set the value globally in Windows, use either of the following approaches:

  • Open the Control Panel > System > Advanced system settings and add or edit the ASPNETCORE_ENVIRONMENT value:

  • Open an administrative command prompt and use the setx command or open an administrative PowerShell command prompt and use [Environment]::SetEnvironmentVariable:

    Command prompt

    The /M switch indicates to set the environment variable at the system level. If the /M switch isn't used, the environment variable is set for the user account.

    PowerShell

    The Machine option value indicates to set the environment variable at the system level. If the option value is changed to User, the environment variable is set for the user account.

When the ASPNETCORE_ENVIRONMENT environment variable is set globally, it takes effect for dotnet run in any command window opened after the value is set. Environment values in launchSettings.json override values set in the system environment.

web.config

To set the ASPNETCORE_ENVIRONMENT environment variable with web.config, see the Setting environment variables section of ASP.NET Core Module.

Project file or publish profile

For Windows IIS deployments: Include the property in the publish profile (.pubxml) or project file. This approach sets the environment in web.config when the project is published:

Per IIS Application Pool

To set the ASPNETCORE_ENVIRONMENT environment variable for an app running in an isolated Application Pool (supported on IIS 10.0 or later), see the AppCmd.exe command section of the Environment Variables topic. When the ASPNETCORE_ENVIRONMENT environment variable is set for an app pool, its value overrides a setting at the system level.

When hosting an app in IIS and adding or changing the ASPNETCORE_ENVIRONMENT environment variable, use any one of the following approaches to have the new value picked up by apps:

  • Execute net stop was /y followed by net start w3svc from a command prompt.
  • Restart the server.

macOS

C Check If In Dev Mode

C Check If In Dev Mode Lyrics

Setting the current environment for macOS can be performed in-line when running the app:

Alternatively, set the environment with export prior to running the app:

Machine-level environment variables are set in the .bashrc or .bash_profile file. Edit the file using any text editor. Add the following statement:

Linux

For Linux distros, use the export command at a command prompt for session-based variable settings and bash_profile file for machine-level environment settings.

Set the environment in code

Call UseEnvironment when building the host. See .NET Generic Host.

Configuration by environment

To load configuration by environment, see Configuration in ASP.NET Core.

Environment-based Startup class and methods

Inject IWebHostEnvironment into the Startup class

Inject IWebHostEnvironment into the Startup constructor. This approach is useful when the app requires configuring Startup for only a few environments with minimal code differences per environment.

In the following example:

  • The environment is held in the _env field.
  • _env is used in ConfigureServices and Configure to apply startup configuration based on the app's environment.

Startup class conventions

When an ASP.NET Core app starts, the Startup class bootstraps the app. The app can define multiple Startup classes for different environments. The appropriate Startup class is selected at runtime. The class whose name suffix matches the current environment is prioritized. If a matching Startup{EnvironmentName} class isn't found, the Startup class is used. This approach is useful when the app requires configuring startup for several environments with many code differences per environment. Typical apps will not need this approach.

To implement environment-based Startup classes, create a Startup{EnvironmentName} classes and a fallback Startup class:

Use the UseStartup(IWebHostBuilder, String) overload that accepts an assembly name:

Startup method conventions

C Check If In Dev Models

Configure and ConfigureServices support environment-specific versions of the form Configure and ConfigureServices. This approach is useful when the app requires configuring startup for several environments with many code differences per environment:

Additional resources

By Rick Anderson

ASP.NET Core configures app behavior based on the runtime environment using an environment variable.

View or download sample code (how to download)

Environments

ASP.NET Core reads the environment variable ASPNETCORE_ENVIRONMENT at app startup and stores the value in IHostingEnvironment.EnvironmentName. ASPNETCORE_ENVIRONMENT can be set to any value, but three values are provided by the framework:

  • Production (default)

The preceding code:

  • Calls UseDeveloperExceptionPage when ASPNETCORE_ENVIRONMENT is set to Development.

  • Calls UseExceptionHandler when the value of ASPNETCORE_ENVIRONMENT is set one of the following:

    • Staging
    • Production
    • Staging_2

The Environment Tag Helper uses the value of IHostingEnvironment.EnvironmentName to include or exclude markup in the element:

On Windows and macOS, environment variables and values aren't case-sensitive. Linux environment variables and values are case-sensitive by default.

Development

The development environment can enable features that shouldn't be exposed in production. For example, the ASP.NET Core templates enable the Developer Exception Page in the development environment.

The environment for local machine development can be set in the PropertieslaunchSettings.json file of the project. Environment values set in launchSettings.json override values set in the system environment.

The following JSON shows three profiles from a launchSettings.json file:

Check

C Check If In Dev Mode Lyrics

Setting the current environment for macOS can be performed in-line when running the app:

Alternatively, set the environment with export prior to running the app:

Machine-level environment variables are set in the .bashrc or .bash_profile file. Edit the file using any text editor. Add the following statement:

Linux

For Linux distros, use the export command at a command prompt for session-based variable settings and bash_profile file for machine-level environment settings.

Set the environment in code

Call UseEnvironment when building the host. See .NET Generic Host.

Configuration by environment

To load configuration by environment, see Configuration in ASP.NET Core.

Environment-based Startup class and methods

Inject IWebHostEnvironment into the Startup class

Inject IWebHostEnvironment into the Startup constructor. This approach is useful when the app requires configuring Startup for only a few environments with minimal code differences per environment.

In the following example:

  • The environment is held in the _env field.
  • _env is used in ConfigureServices and Configure to apply startup configuration based on the app's environment.

Startup class conventions

When an ASP.NET Core app starts, the Startup class bootstraps the app. The app can define multiple Startup classes for different environments. The appropriate Startup class is selected at runtime. The class whose name suffix matches the current environment is prioritized. If a matching Startup{EnvironmentName} class isn't found, the Startup class is used. This approach is useful when the app requires configuring startup for several environments with many code differences per environment. Typical apps will not need this approach.

To implement environment-based Startup classes, create a Startup{EnvironmentName} classes and a fallback Startup class:

Use the UseStartup(IWebHostBuilder, String) overload that accepts an assembly name:

Startup method conventions

C Check If In Dev Models

Configure and ConfigureServices support environment-specific versions of the form Configure and ConfigureServices. This approach is useful when the app requires configuring startup for several environments with many code differences per environment:

Additional resources

By Rick Anderson

ASP.NET Core configures app behavior based on the runtime environment using an environment variable.

View or download sample code (how to download)

Environments

ASP.NET Core reads the environment variable ASPNETCORE_ENVIRONMENT at app startup and stores the value in IHostingEnvironment.EnvironmentName. ASPNETCORE_ENVIRONMENT can be set to any value, but three values are provided by the framework:

  • Production (default)

The preceding code:

  • Calls UseDeveloperExceptionPage when ASPNETCORE_ENVIRONMENT is set to Development.

  • Calls UseExceptionHandler when the value of ASPNETCORE_ENVIRONMENT is set one of the following:

    • Staging
    • Production
    • Staging_2

The Environment Tag Helper uses the value of IHostingEnvironment.EnvironmentName to include or exclude markup in the element:

On Windows and macOS, environment variables and values aren't case-sensitive. Linux environment variables and values are case-sensitive by default.

Development

The development environment can enable features that shouldn't be exposed in production. For example, the ASP.NET Core templates enable the Developer Exception Page in the development environment.

The environment for local machine development can be set in the PropertieslaunchSettings.json file of the project. Environment values set in launchSettings.json override values set in the system environment.

The following JSON shows three profiles from a launchSettings.json file:

Note

The applicationUrl property in launchSettings.json can specify a list of server URLs. Use a semicolon between the URLs in the list:

When the app is launched with dotnet run, the first profile with 'commandName': 'Project' is used. The value of commandName specifies the web server to launch. commandName can be any one of the following:

  • IISExpress
  • IIS
  • Project (which launches Kestrel)

When an app is launched with dotnet run:

  • launchSettings.json is read if available. environmentVariables settings in launchSettings.json override environment variables.
  • The hosting environment is displayed.

The following output shows an app started with dotnet run:

The Visual Studio project properties Debug tab provides a GUI to edit the launchSettings.json file:

Changes made to project profiles may not take effect until the web server is restarted. Kestrel must be restarted before it can detect changes made to its environment.

Warning

launchSettings.json shouldn't store secrets. The Secret Manager tool can be used to store secrets for local development.

When using Visual Studio Code, environment variables can be set in the .vscode/launch.json file. The following example sets the environment to Development:

A .vscode/launch.json file in the project isn't read when starting the app with dotnet run in the same way as Properties/launchSettings.json. When launching an app in development that doesn't have a launchSettings.json file, either set the environment with an environment variable or a command-line argument to the dotnet run command.

Production

The production environment should be configured to maximize security, performance, and app robustness. Some common settings that differ from development include:

  • Caching.
  • Client-side resources are bundled, minified, and potentially served from a CDN.
  • Diagnostic error pages disabled.
  • Friendly error pages enabled.
  • Production logging and monitoring enabled. For example, Application Insights.

Set the environment

It's often useful to set a specific environment for testing with an environment variable or platform setting. If the environment isn't set, it defaults to Production, which disables most debugging features. The method for setting the environment depends on the operating system.

When the host is built, the last environment setting read by the app determines the app's environment. The app's environment can't be changed while the app is running.

Environment variable or platform setting

Azure App Service

To set the environment in Azure App Service, perform the following steps:

  1. Select the app from the App Services blade.
  2. In the Settings group, select the Configuration blade.
  3. In the Application settings tab, select New application setting.
  4. In the Add/Edit application setting window, provide ASPNETCORE_ENVIRONMENT for the Name. For Value, provide the environment (for example, Staging).
  5. Select the Deployment slot setting check box if you wish the environment setting to remain with the current slot when deployment slots are swapped. For more information, see Set up staging environments in Azure App Service in the Azure documentation.
  6. Select OK to close the Add/Edit application setting window.
  7. Select Save at the top of the Configuration blade.

Azure App Service automatically restarts the app after an app setting (environment variable) is added, changed, or deleted in the Azure portal.

Windows

To set the ASPNETCORE_ENVIRONMENT for the current session when the app is started using dotnet run, the following commands are used:

Command prompt

PowerShell

These commands only take effect for the current window. When the window is closed, the ASPNETCORE_ENVIRONMENT setting reverts to the default setting or machine value.

To set the value globally in Windows, use either of the following approaches:

  • Open the Control Panel > System > Advanced system settings and add or edit the ASPNETCORE_ENVIRONMENT value:

  • Open an administrative command prompt and use the setx command or open an administrative PowerShell command prompt and use [Environment]::SetEnvironmentVariable:

    Command prompt

    The /M switch indicates to set the environment variable at the system level. If the /M switch isn't used, the environment variable is set for the user account.

    PowerShell

    The Machine option value indicates to set the environment variable at the system level. If the option value is changed to User, the environment variable is set for the user account.

When the ASPNETCORE_ENVIRONMENT environment variable is set globally, it takes effect for dotnet run in any command window opened after the value is set.

web.config

To set the ASPNETCORE_ENVIRONMENT environment variable with web.config, see the Setting environment variables section of ASP.NET Core Module.

Project file or publish profile

For Windows IIS deployments: Include the property in the publish profile (.pubxml) or project file. This approach sets the environment in web.config when the project is published:

Per IIS Application Pool

To set the ASPNETCORE_ENVIRONMENT environment variable for an app running in an isolated Application Pool (supported on IIS 10.0 or later), see the AppCmd.exe command section of the Environment Variables topic. When the ASPNETCORE_ENVIRONMENT environment variable is set for an app pool, its value overrides a setting at the system level.

Important

When hosting an app in IIS and adding or changing the ASPNETCORE_ENVIRONMENT environment variable, use any one of the following approaches to have the new value picked up by apps:

  • Execute net stop was /y followed by net start w3svc from a command prompt.
  • Restart the server.

macOS

Setting the current environment for macOS can be performed in-line when running the app:

Alternatively, set the environment with export prior to running the app:

Machine-level environment variables are set in the .bashrc or .bash_profile file. Edit the file using any text editor. Add the following statement:

Linux

For Linux distros, use the export command at a command prompt for session-based variable settings and bash_profile file for machine-level environment settings.

Set the environment in code

Call UseEnvironment when building the host. See ASP.NET Core Web Host.

Configuration by environment

To load configuration by environment, we recommend:

  • appsettings files (appsettings.{Environment}.json). See Configuration in ASP.NET Core.
  • Environment variables (set on each system where the app is hosted). See ASP.NET Core Web Host and Safe storage of app secrets in development in ASP.NET Core.
  • Secret Manager (in the Development environment only). See Safe storage of app secrets in development in ASP.NET Core.

Environment-based Startup class and methods

Inject IHostingEnvironment into Startup.Configure

Inject IHostingEnvironment into Startup.Configure. This approach is useful when the app only requires configuring Startup.Configure for only a few environments with minimal code differences per environment.

Inject IHostingEnvironment into the Startup class

Inject IHostingEnvironment into the Startup constructor and assign the service to a field for use throughout the Startup class. This approach is useful when the app requires configuring startup for only a few environments with minimal code differences per environment.

In the following example:

  • The environment is held in the _env field.
  • _env is used in ConfigureServices and Configure to apply startup configuration based on the app's environment.

Startup class conventions

When an ASP.NET Core app starts, the Startup class bootstraps the app. The app can define separate Startup classes for different environments (for example, StartupDevelopment). The appropriate Startup class is selected at runtime. The class whose name suffix matches the current environment is prioritized. If a matching Startup{EnvironmentName} class isn't found, the Startup class is used. This approach is useful when the app requires configuring startup for several environments with many code differences per environment.

To implement environment-based Startup classes, create a Startup{EnvironmentName} class for each environment in use and a fallback Startup class:

Use the UseStartup(IWebHostBuilder, String) overload that accepts an assembly name:

Startup method conventions

Configure and ConfigureServices support environment-specific versions of the form Configure and ConfigureServices. This approach is useful when the app requires configuring startup for several environments with many code differences per environment.

Additional resources





broken image