在子文件夹中构建.NET Core应用程序的问题

时间:2017-02-12 04:30:45

标签: c# asp.net-core

.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的文件夹,以及一个名为MyApp.Web的src下的文件夹,如下所示:

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

下找到这个文件夹

我错过了什么?

2 个答案:

答案 0 :(得分:0)

我找到了遗漏的位。

launch.json

的片段

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

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

答案 1 :(得分:0)

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

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