【问题标题】:Why doesn't environment variable reference work for MS Build Target?为什么环境变量引用对 MS Build Target 不起作用?
【发布时间】:2021-01-11 22:59:40
【问题描述】:

我有以下配置,但 ASPNETCORE_ENVIRONMENT 变量没有进入 CsProj 配置。

.vscode/launch.json

{
    // Use IntelliSense to find out which attributes exist for C# debugging
    // Use hover for the description of the existing attributes
    // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
    "version": "0.2.0",
    "configurations": [
        {
            "name": ".NET Core Launch (web)",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            "program": "${workspaceFolder}/Web/bin/Debug/net5.0/Web.dll",
            "args": [],
            "cwd": "${workspaceFolder}/Web",
            "stopAtEntry": false,
            // Enable launching a web browser when ASP.NET Core starts. For more information: https://aka.ms/VSCode-CS-LaunchJson-WebBrowser
            "serverReadyAction": {
                "action": "openExternally",
                "pattern": "\\bNow listening on:\\s+(https?://\\S+)"
            },
            "env": {
                "ASPNETCORE_ENVIRONMENT": "Development"
            },
            "sourceFileMap": {
                "/Views": "${workspaceFolder}/Views"
            }
        }
    ]
}

.vscode/tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "command": "dotnet",
            "type": "process",
            "args": [
                "build",
                "${workspaceFolder}/Web/Web.csproj",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary"
            ],
            "problemMatcher": "$msCompile"
        },
        {
            "label": "publish",
            "command": "dotnet",
            "type": "process",
            "args": [
                "publish",
                "${workspaceFolder}/Web/Web.csproj",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary"
            ],
            "problemMatcher": "$msCompile"
        },
        {
            "label": "watch",
            "command": "dotnet",
            "type": "process",
            "args": [
                "watch",
                "run",
                "${workspaceFolder}/Web/Web.csproj",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary"
            ],
            "problemMatcher": "$msCompile"
        }
    ]
}

Web/Properties/launchSettings.json

{
    "iisSettings": {
        "windowsAuthentication": false,
        "anonymousAuthentication": true,
        "iisExpress": {
            "applicationUrl": "http://localhost:15269",
            "sslPort": 44386
        }
    },
    "profiles": {
        "IIS Express": {
            "commandName": "IISExpress",
            "launchBrowser": true
        },
        "Web": {
            "commandName": "Project",
            "dotnetRunMessages": "true",
            "launchBrowser": true,
            "applicationUrl": "https://localhost:5001;http://localhost:5000"
        }
    }
}

Web/Web.csproj

<Project Sdk="Microsoft.NET.Sdk.Web">
    <PropertyGroup>
        <TargetFramework>net5.0</TargetFramework>
    </PropertyGroup>
    <Target Name="PreCompile" BeforeTargets="Build">
        <Exec Command="$(MSBuildStartupDirectory)/node_modules/.bin/gulp build --environment $(ASPNETCORE_ENVIRONMENT)" />
    </Target>
</Project>
// gulpFile.ts
export { default as build } from './build/Sass';

// build/Sass.ts
import type { TaskFunction } from 'gulp';
import { dest, src } from 'gulp';
import * as fiber from 'fibers';
import * as sass from 'gulp-dart-sass';


const environment = process.argv[3] === '--environment' ? process.argv[4] : 'Staging';


const task: TaskFunction = () => {

    console.log(`Hello!!!!! ${environment}`);

    console.log(process.env);

    return src('./Web/themes/**/*.sass')
        .pipe(sass({ fiber }))
        .pipe(dest('./Web/wwwroot/themes'));
};


export default task;

输出

 Executing task: dotnet build /.../Web/Web.csproj /property:GenerateFullPaths=true /consoleloggerparameters:NoSummary <

Microsoft (R) Build Engine version 16.8.0+126527ff1 for .NET
Copyright (C) Microsoft Corporation. All rights reserved.

  Determining projects to restore...
  All projects are up-to-date for restore.
  Web -> /.../Web/bin/Debug/net5.0/Web.dll
  Web -> /.../Web/bin/Debug/net5.0/Web.Views.dll
  [17:50:28] Requiring external module ts-node/register
  [17:50:28] Working directory changed to ~/...
  [17:50:30] Using gulpfile ~/.../gulpfile.ts
  [17:50:30] Starting 'build'...
  Hello!!!!! undefined
  {
    TERM_PROGRAM: 'vscode',
    TERM: 'xterm-256color',
    SHELL: '/bin/zsh',
    TMPDIR: '/var/folders/pf/rmb77nvd2t99vjmq9z1xc6100000gn/T/',
    TERM_PROGRAM_VERSION: '1.52.1',
    DOTNET_HOST_PATH: '/usr/local/share/dotnet/dotnet',
    ORIGINAL_XDG_CURRENT_DESKTOP: 'undefined',
    LC_ALL: 'en_US.UTF-8',
    DOTNET_CLI_TELEMETRY_SESSIONID: 'f3d95a71-5185-4c74-b373-da49d9b6f174',
    USER: 'roydukkey',
    COMMAND_MODE: 'unix2003',
    MSBuildLoadMicrosoftTargetsReadOnly: 'true',
    SSH_AUTH_SOCK: '/private/tmp/com.apple.launchd.JpMQQSNA9S/Listeners',
    __CF_USER_TEXT_ENCODING: '0x1F5:0x0:0x0',
    PATH: '/usr/local/php5/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands',
    __CFBundleIdentifier: 'com.microsoft.VSCode',
    PWD: '.../Web',
    LANG: 'en_US.UTF-8',
    MSBuildSDKsPath: '/usr/local/share/dotnet/sdk/5.0.101/Sdks',
    XPC_FLAGS: '0x0',
    XPC_SERVICE_NAME: '0',
    SHLVL: '1',
    HOME: '...',
    VSCODE_GIT_ASKPASS_MAIN: '/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/git/dist/askpass-main.js',
    LOGNAME: 'roydukkey',
    VSCODE_GIT_IPC_HANDLE: '/var/folders/pf/rmb77nvd2t99vjmq9z1xc6100000gn/T/vscode-git-8f8e32c0ee.sock',
    GIT_ASKPASS: '/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/git/dist/askpass.sh',
    VSCODE_GIT_ASKPASS_NODE: '/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Renderer).app/Contents/MacOS/Code Helper (Renderer)',
    COLORTERM: 'truecolor',
    MSBuildExtensionsPath: '/usr/local/share/dotnet/sdk/5.0.101/',
    _: '.../node_modules/.bin/gulp',
    INIT_CWD: '.../Web'
  }
  [17:50:30] Finished 'build' after 71 ms

Terminal will be reused by tasks, press any key to close it.
-------------------------------------------------------------------
You may only use the Microsoft .NET Core Debugger (vsdbg) with
Visual Studio Code, Visual Studio or Visual Studio for Mac software
to help you develop and test your applications.
-------------------------------------------------------------------
Using launch settings from '/.../Web/Properties/launchSettings.json' [Profile 'Web']...
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Private.CoreLib.dll'.
Loaded '/.../Web/bin/Debug/net5.0/Web.dll'. Symbols loaded.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Runtime.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.Hosting.Abstractions.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/netstandard.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.Hosting.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Hosting.Abstractions.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.Configuration.Abstractions.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.DependencyInjection.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.Logging.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Collections.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.ComponentModel.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.IO.FileSystem.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Hosting.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.Configuration.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.Configuration.EnvironmentVariables.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.Primitives.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Threading.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Linq.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Server.Kestrel.Core.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Server.Kestrel.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Server.IIS.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Runtime.InteropServices.RuntimeInformation.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Server.IISIntegration.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.Configuration.CommandLine.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Mvc.Core.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.FileProviders.Abstractions.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.FileProviders.Physical.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Memory.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.Configuration.FileExtensions.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.Configuration.Binder.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.Configuration.Json.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.Configuration.UserSecrets.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Runtime.InteropServices.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.IO.FileSystem.Watcher.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.ComponentModel.Primitives.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Collections.Concurrent.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.FileSystemGlobbing.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Threading.Thread.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Text.Json.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Text.Encoding.Extensions.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Numerics.Vectors.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Runtime.CompilerServices.Unsafe.dll'. Module was built without symbols.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.Options.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.Logging.Abstractions.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.Logging.EventLog.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.Logging.Configuration.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.Options.ConfigurationExtensions.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.Logging.Console.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.Logging.Debug.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.Logging.EventSource.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Diagnostics.Tracing.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Diagnostics.DiagnosticSource.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Http.Abstractions.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Http.Features.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Http.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Connections.Abstractions.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Net.Primitives.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.HostFiltering.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.HttpOverrides.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Routing.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.ObjectPool.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Routing.Abstractions.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.ObjectModel.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Mvc.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Runtime.Loader.dll'.
Loaded '/.../Web/bin/Debug/net5.0/Web.Views.dll'. Symbols loaded.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Razor.Runtime.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Mvc.Razor.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Mvc.Abstractions.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Authentication.Core.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Authentication.Abstractions.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Security.Claims.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Authorization.Policy.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Authorization.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Mvc.DataAnnotations.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Mvc.RazorPages.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Razor.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Mvc.ViewFeatures.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Linq.Expressions.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Components.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.JSInterop.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.DataProtection.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.DataProtection.Abstractions.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Cryptography.Internal.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Antiforgery.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.WebEncoders.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Text.Encodings.Web.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Runtime.Intrinsics.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.Caching.Abstractions.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.Caching.Memory.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Mvc.TagHelpers.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Extensions.Localization.Abstractions.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Threading.ThreadPool.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Runtime.Extensions.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Console.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Threading.Tasks.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/Microsoft.Win32.Primitives.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Xml.XDocument.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Private.Xml.Linq.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Private.Xml.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/Microsoft.Win32.Registry.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/System.IO.Pipelines.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Security.Cryptography.Algorithms.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Private.Uri.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Text.RegularExpressions.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Reflection.Emit.ILGeneration.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Reflection.Emit.Lightweight.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Reflection.Primitives.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Security.Cryptography.Primitives.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Diagnostics.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.HttpsPolicy.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.StaticFiles.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.Net.Http.Headers.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.ComponentModel.TypeConverter.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Collections.Specialized.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Html.Abstractions.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Metadata.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Diagnostics.Abstractions.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Security.Cryptography.X509Certificates.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Collections.NonGeneric.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Formats.Asn1.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Security.Cryptography.Encoding.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Runtime.Numerics.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Net.Security.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Net.Sockets.dll'.
Microsoft.Hosting.Lifetime: Information: Now listening on: https://localhost:5001
Microsoft.Hosting.Lifetime: Information: Now listening on: http://localhost:5000
info: Microsoft.Hosting.Lifetime[0]
      Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
      Now listening on: http://localhost:5000
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
Microsoft.Hosting.Lifetime: Information: Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development
Microsoft.Hosting.Lifetime: Information: Hosting environment: Development
Microsoft.Hosting.Lifetime: Information: Content root path: /.../Web
info: Microsoft.Hosting.Lifetime[0]
      Content root path: /.../Web
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.ComponentModel.Annotations.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.WebUtilities.dll'.
Loaded 'Anonymously Hosted DynamicMethods Assembly'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App/5.0.1/Microsoft.AspNetCore.Http.Extensions.dll'.
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/5.0.1/System.Net.WebSockets.dll'.

【问题讨论】:

    标签: asp.net-core visual-studio-code msbuild


    【解决方案1】:

    TL;DR

    tasks.json里面的build任务改成

             {
                "label": "build",
                "command": "dotnet",
                "type": "process",
                "options": {
                    "env": {
                        "ASPNETCORE_ENVIRONMENT":"development"
                    }
                },
                "args": [
                    "build",
                    "${workspaceFolder}/Web/Web.csproj",
                    "/property:GenerateFullPaths=true",
                    "/consoleloggerparameters:NoSummary"
                ],
                "problemMatcher": "$msCompile"
            },
    

    说明

    launch.json启动目标 中设置的环境变量 (ENV) 仅传递给 program,而不传递给任何启动任务。
    即,这些 ENV 仅传递给 ${workspaceFolder}/Web/bin/Debug/net5.0/Web.dll,而不是传递给 preLaunchTask 中的 build 任务。
    仅供参考,构建您的项目 (.csproj) 正在由 dotnet build 而不是 msbuild 完成,存在细微差别。
    无论如何,这个构建是由preLaunchTask (build) 发起的。
    因此,如果您希望将 ENV 传递给项目构建器(进而传递给 gulp 程序),那么您需要某种方式将这些支付给tasks.json 中指定的 build 任务 ENV 可以通过options 属性传递给任务。 https://code.visualstudio.com/docs/editor/tasks#_custom-tasks

    不......你不能像这样重用 ENV 变量

    "env": {
        "ASPNETCORE_ENVIRONMENT":"${env:ASPNETCORE_ENVIRONMENT}"
    }
    

    原因如上所述; Launch Targets 中的 ENV 不会传递给任务。

    【讨论】:

    • 我刚试过这个,似乎是正确的。你有没有想过为什么这个过程是这样设计的?好像少了点什么,不是吗?
    • 我可以推测一个原因,但不,我没有任何可靠的来源来支持它。最可能的原因是launch.json 是特定于omisharptasks 内部tasks.json 是通用的,它是vscode 本身的一个特性。因此,您本质上要求的是将扩展特定配置传递给主机程序本身,我认为这不是有效的流程;这基本上创建了一个反向依赖
    【解决方案2】:

    我认为您可能需要将环境变量从.vscode/launch.json 文件中的env 移动到Web/Properties/launchSettings.json 的“Web”属性中的environmentVariables

    docs.microsoft.com reference

    【讨论】:

    【解决方案3】:

    我想尝试在您的 tasks.json 调用中添加另一个包含“/p:ASPNETCORE_ENVIRONMENT=$(ASPNETCORE_ENVIRONMENT)”的 args 元素?

    查看 process.env 的输出,似乎 dotnet.exe 的调用环境没有从 VSCode 继承环境变量。

    【讨论】:

    • 没用。根据code.visualstudio.com/docs/editor/… 尝试/p:ASPNETCORE_ENVIRONMENT=${env:ASPNETCORE_ENVIRONMENT}。也没有用。
    • 为错误的语法道歉。环境管道似乎是 - Code.exe -> dotnet.exe -> MSBuild.exe -> gulp 你已经证明 gulp 没有设置 ASPNETCORE_ENVIRONMENT (process.env) - 似乎 VSCode 没有提供它进入dotnet.exe的环境。我会尝试在您的 shell 中设置 ASPNETCORE_ENVIRONMENT 然后直接在该 shell 中调用 dotnet.exe 进行验证,我怀疑这会将 Code.exe 识别为没有提供应有的环境。
    • 这是正确的。相反,我相信dotnet.exe 没有将变量传递给MSBuild.exe,因为在更改launch.json > Microsoft.Hosting.Lifetime: Information: Hosting environment: Development 中的值时,输出中的环境确实发生了变化。
    【解决方案4】:

    不管是否传递了环境变量,在我看来你是在尝试以Development 模式运行程序,对吧?您似乎成功地做到了这一点,因为托管环境在最后一个输出窗口中显示为 Development 实际上。所以,如果这是你的目标,也许它per si可以解决。

    另一方面,您会发现定义ASPNETCORE_ENVIRONMENT 变量以用于生产用途很有用。如果是这种情况,在 MSBuild 中定义它可能不是您想要的,也绝对不是在 launchSettings.json 中定义的,因为这仅用于开发目的。因此,我认为在您要运行应用程序的环境中将其定义为环境变量将是一个不错的选择 - 然后,该值是 DevelopmentStaging 还是 生产取决于部署管道。

    但是,请注意,如果您不想访问ASPNETCORE_ENVIRONMENT 变量本身,您实际上可能不需要定义它。已发布应用的默认托管环境为Production,仅在提供环境变量(here)时才会更改。

    这个reference 有关于这个主题的很好的信息:)

    【讨论】:

    • 我只想在一个位置将整个堆栈从'Development''Production' 切换。由于 launch.json 位于堆栈的顶部,并且由于 EnvVar 可以在那里配置,我不明白为什么我的期望是不合理的。
    • 好的,明白了:) 好吧,那个文件只在从VS Code运行时使用,它不用于任何其他情况;发布应用程序时会忽略此类文件。这就是为什么我认为最好在“机器”级别处理变量。此外,这只是一个影响主机环境模式的环境变量;但是,您可以在不设置 ASPNETCORE_ENVIRONMENT 变量的情况下更改环境模式(根据您显示的内容,我认为您只是在验证环境模式,而不是变量)。
    • 说到这里,如果你想在执行dotnet run时尝试设置变量或环境,可以关注here的答案。如果你只想在运行时调试东西,如果你在 Windows 机器上,你可能想尝试 Visual Studio IDE(社区版是免费的)而不是代码,因为这变得容易得多
    猜你喜欢
    • 1970-01-01
    • 2021-12-29
    • 2020-01-28
    • 2015-11-13
    • 2021-11-13
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多