在 .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.json
和tasks.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
我错过了什么?
答案 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();
}