【问题标题】:Some file not served when run via Visual Studio Code通过 Visual Studio Code 运行时未提供某些文件
【发布时间】:2016-11-12 18:27:59
【问题描述】:

我有一个由 Yeoman(described here)生成的“Hello World”Kestrel 服务器。

yo aspnet

当我通过命令行运行该站点时,一切正常:

dotnet run

如果它通过 Visual Studio Code 运行,尽管 bootstrap.cssjquery.jsbootstrap.js 不加载 (404)。

查看 F12 工具,它们实际上来自不同的位置。当通过dotnet run 运行时,它们来自https://ajax.aspnetcdn.com/...,但是当通过Visual Studio Code 运行时,浏览器会在本地文件夹~/lib/... 中寻找它们。

一个。为什么根据我运行网站的方式,文件的来源会有所不同? 湾。我该如何解决这个问题?

谢谢

【问题讨论】:

    标签: c# .net asp.net-core visual-studio-code kestrel-http-server


    【解决方案1】:

    当你从命令行运行它时,它会在生产模式下运行(没有设置ASPNETCORE_ENVIRONMENT 变量。当你从Visual Studio 运行它时,它会将ASPNETCORE_ENVIRONMENT 设置为Development

    在 Razor 文件中,您有一个 <environments> 部分,用于控制在哪种生产模式下提供哪些文件。根据您的环境/操作系统,您需要以不同的方式设置变量。即在 Linux 中,您需要运行 ASPNETCORE_ENVIRONMENT=Development dotnet run

    至于在开发模式下运行时出现 404 的原因,您可能需要将 wwwroot 文件夹复制到您的输出目录,并将此条目放在您的 project.json 中。

    "buildOptions": {
      "emitEntryPoint": true,
      "preserveCompilationContext": true,
      "copyToOutput": 
      [
        "wwwroot",
        "Views",
        "appsettings.json",
        "web.config"
      ]
    },
    "publishOptions": {
      "include": [
        "wwwroot",
        "Views",
        "appsettings.json",
        "web.config"
      ]
    },
    

    虽然通常应该有必要将wwwroot 添加到copyToOutput

    【讨论】:

    • 实际上(对于样板来说相当愚蠢)没有lib 目录。
    • @lib 文件夹通常由 bower(恢复 bower 依赖项时)或 npm + gulp 任务(使用 npm 时)创建。 bower 默认在 wwwroot/lib 中恢复其依赖关系,而 npm 在 proejctroot/npm_modules 中执行它
    • 您可以尝试运行 bower installnpm install 来恢复 bower 或 npm 依赖项,具体取决于您运行的依赖项(您可以通过 bower.json 或 npm 的 package.json 的存在来查看它)
    • bower install 做到了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-12-23
    • 2018-06-06
    • 2023-01-31
    • 2019-04-29
    • 2017-09-14
    • 2015-07-20
    • 2020-08-23
    相关资源
    最近更新 更多