【问题标题】:How to target multiple frameworks in VS2017 final?如何在 VS2017 final 中定位多个框架?
【发布时间】:2017-03-08 11:26:20
【问题描述】:

对于 ASP.NET Core,我可以在一个 Project.json 中定位多个框架(例如 netcoreapp1.1dnx451):

"frameworks": {
   "netcoreapp1.1": {
     "dependencies": {
       "Microsoft.NETCore.App": {
         "version": "1.1.0",
         "type": "platform"
       }
     },
     "imports": [
       "dotnet5.6",
       "portable-net45+win8"
     ]
   },
   "dnx451": {}
 },

在 Visual Studio 2017 的最终版本中,我只能定位 netcoreapp1.1dnx451,但我认为无法同时定位两者。

我尝试通过设置 <TargetFramework>netcoreapp1.1;dnx451</TargetFramework> 甚至 <TargetFrameworks>netcoreapp1.1;dnx451</TargetFrameworks> 直接编辑 csproj 文件以添加第二个框架,但由于框架不受支持而在 Visual Studio 中出现错误。

那么,在 Visual Studio 2017 的最终版本中,如何在一个项目中同时定位 netcoreapp1.1dnx451

【问题讨论】:

  • 您是否尝试过添加第二个TargetFramework 元素?那么<TargetFramework>netcoreapp1.1</TargetFramework><TargetFramework>net462</TargetFramework>?
  • dnx 是一个已弃用的绰号(RC2 出现时已弃用)iirc,因为 RC1 是支持 DNX 的最后一个版本。 RC2 及更高版本只能使用新的 dotnet 工具运行。你应该改用netxxx
  • 我发现这个问题是为了提供更多关于答案的细节:stackoverflow.com/questions/42747977/…

标签: asp.net-core visual-studio-2017


【解决方案1】:

您需要更改一些内容。首先,<TargetFrameworks> 标记是多目标的正确标记,; 是分隔符。

DNX 在 RC2 的开发过程中被弃用,所以支持 DNX 的最后一个版本是 RC1。 dnxcore5x(以及后来的dotnet5.x)名字被替换为netstandard1.x(用于类库)和netcoreapp1.x用于应用程序。 dnx4xx 已被整体弃用,应使用 net4xx

此外,当您面向 .NET Framework(单独或与 .NET Core/NetStandard 一起)时,您将需要定义一个运行时标识符:

<RuntimeIdentifier>win7-x86</RuntimeIdentifier>

<RuntimeIdentifier>win7-x64</RuntimeIdentifier>

或者你想成为默认值的任何一个。

更新

仅作为附加信息。当您针对多个平台时,您需要使用条件来解析包,即Condition="'$(TargetFramework)' == '&lt;targetmoniker&gt;'

<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp1.1'">
    <PackageReference Include="Microsoft.NETCore.App">
      <Version>1.0.1</Version>
    </PackageReference>
</ItemGroup>

否则可能会出现包还原错误

【讨论】:

  • 那么正确的是例如&lt;TargetFrameworks&gt;netstandard1.6;net462&lt;/TargetFrameworks&gt; 用于类库?
  • 是的。但是 EF Core Tools 的一个常见解决方法是将类库也设置为 netcoreapp1.x,因为否则这些工具将找不到位于 ASP.NET Core 应用程序之外的 DbContext(将 DbContext 放在类库中的常见做法)。不知道这是否已在新工具中修复,但它是 VS2015 的 project.json 和 .NET Core Tools for VS 的限制,请参阅docs.microsoft.com/en-us/ef/core/miscellaneous/cli/…
  • @Dismissile:到目前为止是的。但是大多数 project.json 设置也没有 UI
  • @Tseng 是的,但我希望 VS2017 版本能解决这个问题:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-16
  • 1970-01-01
  • 2017-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多