ASP.NET 在 class 库中找不到核心视图(Microsoft.Net.Sdk 没有 .Web)
ASP.NET Core View Not Found in a class library (Microsoft.Net.Sdk without .Web)
我想要一个 Microsoft.Net.Sdk
项目,它使用 asp.net 内核启动 Web 服务器。这是一个普通的 dll 项目,而不是 Web
项目。 csproj header 如下:
<Project Sdk="Microsoft.NET.Sdk">
为了让它发挥作用,我添加了(参见 docs):
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
Web 服务器正确启动但是 视图不工作,我总是遇到View Not Found
异常。视图位于正确的位置并且是 Content 文件。
如果我从 <Project Sdk="Microsoft.NET.Sdk">
更改为 <Project Sdk="Microsoft.NET.Sdk.Web">
一切正常。
我想我必须添加一些包或 FrameworkReference
到我的 csproj,但我找不到任何东西。有什么想法吗?
我通过为 ASP.NET 核心项目切换到推荐的 SDK 标签解决了这个问题:
<Project Sdk="Microsoft.NET.Sdk.Web">
最初我认为在 class 库项目中使用该模式会带来其他问题,但我只是部分正确:切换到 Microsoft.NET.Sdk.Web
SDK 会将项目输出类型更改为 Exe
(不再是 class 库),因此它将开始抱怨缺少 Main()
方法。
但简单的部分是您可以通过设置 OutputType
属性:
来覆盖此行为
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<!-- Explicitely override this setting because Microsoft.NET.Sdk.Web sets it to Exe -->
<OutputType>Library</OutputType>
</PropertyGroup>
此外,您不需要包含 Microsoft.AspNetCore.App
框架,因此 您应该删除此部分:
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
我想要一个 Microsoft.Net.Sdk
项目,它使用 asp.net 内核启动 Web 服务器。这是一个普通的 dll 项目,而不是 Web
项目。 csproj header 如下:
<Project Sdk="Microsoft.NET.Sdk">
为了让它发挥作用,我添加了(参见 docs):
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
Web 服务器正确启动但是 视图不工作,我总是遇到View Not Found
异常。视图位于正确的位置并且是 Content 文件。
如果我从 <Project Sdk="Microsoft.NET.Sdk">
更改为 <Project Sdk="Microsoft.NET.Sdk.Web">
一切正常。
我想我必须添加一些包或 FrameworkReference
到我的 csproj,但我找不到任何东西。有什么想法吗?
我通过为 ASP.NET 核心项目切换到推荐的 SDK 标签解决了这个问题:
<Project Sdk="Microsoft.NET.Sdk.Web">
最初我认为在 class 库项目中使用该模式会带来其他问题,但我只是部分正确:切换到 Microsoft.NET.Sdk.Web
SDK 会将项目输出类型更改为 Exe
(不再是 class 库),因此它将开始抱怨缺少 Main()
方法。
但简单的部分是您可以通过设置 OutputType
属性:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<!-- Explicitely override this setting because Microsoft.NET.Sdk.Web sets it to Exe -->
<OutputType>Library</OutputType>
</PropertyGroup>
此外,您不需要包含 Microsoft.AspNetCore.App
框架,因此 您应该删除此部分:
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>