【问题标题】:Problems structuring .NET Core application in subfolders在子文件夹中构建 .NET Core 应用程序时出现问题
【发布时间】:2017-02-12 13:39:58
【问题描述】:

.NET 4.6 中,我习惯将我的项目组织在这样的项目/文件夹中:

MyApp
  \MyApp.Core
  \MyApp.Data
  \MyApp.Service
  \MyApp.Web

我正在尝试使用 .NET Core 1.1 和 Visual Studio Code 创建一个简单的应用程序。

首先我为我的应用程序创建了一个新文件夹并执行了命令:

dotnet new -t web

创建了一个新应用程序,当我从命令行或 VS Code 中的调试器运行它时,一切正常。

但是,所有源代码都在根目录中。为了更好地组织我的代码,我创建了一个名为 src 的文件夹,并在 src 下创建了一个名为 MyApp.Web 的文件夹,如下所示:

MyApp
  \src
    \MyApp.Web

我还更新了 launch.jsontasks.json 以反映我的更改:

来自 launch.json

的片段
"program": "${workspaceRoot}\\src\\MyApp.Web\\bin\\Debug\\netcoreapp1.1\\MyApp.Web.dll",

来自 tasks.json

的片段
"args": [
   "${workspaceRoot}\\src\\MyApp.Web\\project.json"
]

当我从命令行运行它时,它工作正常,但是当我从 VS Code 调试器运行它时,它构建得很好,但我得到了这个错误:

InvalidOperationException: The view 'Index' was not found. The following locations were searched:
/Views/Home/Index.cshtml
/Views/Shared/Index.cshtml

我猜它正在根目录中寻找一个名为 Views 的文件夹,但它应该在 /src/MyApp.Web 下寻找这个文件夹

我错过了什么?

【问题讨论】:

    标签: c# asp.net-core


    【解决方案1】:

    我找到了丢失的位。

    来自 launch.json

    的片段

    更改:"cwd": "${workspaceRoot}"

    收件人:"cwd": "${workspaceRoot}/src/MyApp.Web"

    【讨论】:

      【解决方案2】:

      添加 .UseContentRoot(Directory.GetCurrentDirectory() 为我解决了同样的问题。

      public static void Main(string[] args)
          {
              new WebHostBuilder()
                  .UseKestrel()
                  .UseContentRoot(Directory.GetCurrentDirectory())
                  .UseStartup<Startup>()
                  .Build()
                  .Run();
          }
      

      【讨论】:

      • 在使用 dotnet new -t web 生成 Web 应用程序后,我的这一行没有丢失
      猜你喜欢
      • 2017-06-10
      • 2020-03-09
      • 2020-04-11
      • 2020-06-09
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      • 2022-08-07
      • 2021-10-05
      相关资源
      最近更新 更多