当我尝试查看我的Razor页面时,我得到以下信息
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="2.1.2" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.1.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.1.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.1.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="2.1.1" />
<PackageReference Include="NETStandard.Library" Version="2.0.3" />
<PackageReference Include="Newtonsoft.json" Version="11.0.2" />
</ItemGroup>
这是一个令人困惑的消息,因为我的软件包引用在下面并包括 netstandard
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env,
ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole();
loggerFactory.AddDebug();
app.UseMvc();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
我的目标是.netcore 2.1
我的startup.cs是
.env
我已经多次清除并恢复了程序包缓存,并已在VS2017和dotnetcli下复制了此指针,因此不胜感激。我目前的最佳猜测是存在冲突的依赖关系,但是我仍然对.netcore还是陌生的,并且不确定如何调试,感谢任何帮助
答案 0 :(得分:4)
官方存储库中有an issue,对此主题进行了冗长的讨论。在撰写本文时,该问题仍然悬而未决,但是您似乎可以尝试几种潜在的解决方案。但是,似乎有多个原因(目前尚不确定)导致此问题,因此,我建议您尝试所有这些问题。我将在其中包括其中一些内容,因此,这不是一个仅链接的答案,但我认为完全阅读该问题是明智的。
<system.web>
<compilation debug="true" targetFramework="4.7.1" >
<assemblies>
<add assembly="netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51"/>
</assemblies>
</compilation>
<httpRuntime targetFramework="4.7.1" />
</system.web>
注意:
在IIS或IIS Express中托管应用程序时,需要一个web.config文件。 web.config中的设置使ASP.NET Core Module能够启动应用程序并配置其他IIS设置和模块。如果不存在web.config文件,并且项目文件包含
<Project Sdk="Microsoft.NET.Sdk.Web">
,则发布项目将在发布的输出(发布文件夹)中创建一个web.config文件。
.csproj
。 <ItemGroup>
<Reference Include="netstandard" />
</ItemGroup>
根据您提出问题的方式,我假设您的项目是全新的,并且可以选择创建一个新项目。
将global.json更改为dotnet SDK的目标版本2.1.2
,而不是2.0.3
。
安装最新版本的SDK
希望那里能为您解决问题。
编辑:我注意到您已经致电app.UseMvc()
两次。我怀疑它有什么作用,因为我想这些调用只是设置状态,而无需调用两次。
答案 1 :(得分:-1)
对于使用其默认项目模板创建针对.netcore2.1的Asp.net mvc应用程序的VS 2017,我没有遇到任何问题。 在解决方案中,如果某些软件包引用的依赖项之间存在版本冲突,则可能会给您带来问题。
使用以下参考文献
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="2.1.0" />
Microsoft.AspNetCore.Mvc,Microsoft.AspNetCore.Server.Kestrel和您的.netcore2.1 MVC应用程序“ Microsoft.AspNetCore.App”应该没有任何版本冲突,并且也适用于它们的依赖项。
如果您选择的是Mvc软件包的首选版本,请确保具有Server.Kestrel的兼容版本以及.netcore2.1应用程序的引用。