我正在尝试创建一个面向.NET Standard 2.0的新.NET MVC应用程序。
当我执行dotnet new mvc -au None
时,我最终得到了一个定位aspnetcore2.0
的应用。由于我希望项目定位netstandard2.0
,因此我必须手动制作.csproj
文件:
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.1" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.2" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.1" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.2" />
<DotNetCliToolReference Include="Microsoft.DotNet.Watcher.Tools" Version="2.0.0" />
</ItemGroup>
</Project>
一切都建立得很好,但当我做dotnet run
时,事情会向南发展:
可运行项目应针对可运行的TFM(例如, netcoreapp2.0)并使OutputType为'Exe'。
相关信息:
dotnet --version
2.1.4
我在这里缺少什么?
答案 0 :(得分:3)
您应定位netcoreapp2.0
。
当您选择DotNetCore 2.0时,您实际上选择了.net标准的 实现 ,它使用基于.net标准2.0的类。这些类通常被编译成一个不可执行的类库(dll)。或者,您可以基于标准在应用程序项目中构建类的实现。 DotNetCore应用程序是 可执行 的控制台应用程序。
请参阅以下部分:Relationship to .NET Standard