如何在 VS2017 final 中针对多个框架?
How to target multiple frameworks in VS2017 final?
对于 ASP.NET 核心,我可以在一个 Project.json:
中针对多个框架(例如 netcoreapp1.1
和 dnx451
)
"frameworks": {
"netcoreapp1.1": {
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.1.0",
"type": "platform"
}
},
"imports": [
"dotnet5.6",
"portable-net45+win8"
]
},
"dnx451": {}
},
在 Visual Studio 2017 的最终版本中,我只能定位 netcoreapp1.1
或 dnx451
,但我看不到同时定位两者的方法。
我尝试通过设置 <TargetFramework>netcoreapp1.1;dnx451</TargetFramework>
甚至 <TargetFrameworks>netcoreapp1.1;dnx451</TargetFrameworks>
直接编辑 csproj 文件以添加第二个框架,但由于不支持的框架而在 Visual Studio 中出现错误。
那么如何在 Visual Studio 2017 的最终版本中在一个项目中同时定位 netcoreapp1.1
和 dnx451
?
您需要更改一些内容。首先,<TargetFrameworks>
标签是用于多目标的正确标签,;
是分隔符。
DNX 在 RC2 的开发过程中被弃用,所以支持 DNX 的最后一个版本是 RC1。 dnxcore5x
(以及后来的 dotnet5.x
)绰号被替换为 netstandard1.x
(对于 Class 库)和 netcoreapp1.x
对于应用程序。 dnx4xx
已被整体弃用,应使用 net4xx
。
此外,当您面向 .NET Framework(单独或与 .NET Core/NetStandard)时,您将需要定义一个运行时标识符:
<RuntimeIdentifier>win7-x86</RuntimeIdentifier>
或
<RuntimeIdentifier>win7-x64</RuntimeIdentifier>
或者您想要的默认值。
更新
作为附加信息。当您针对多个平台时,您需要使用条件来进行包解析,即 Condition="'$(TargetFramework)' == '<targetmoniker>'
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp1.1'">
<PackageReference Include="Microsoft.NETCore.App">
<Version>1.0.1</Version>
</PackageReference>
</ItemGroup>
否则你可能会遇到包恢复错误
对于 ASP.NET 核心,我可以在一个 Project.json:
中针对多个框架(例如netcoreapp1.1
和 dnx451
)
"frameworks": {
"netcoreapp1.1": {
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.1.0",
"type": "platform"
}
},
"imports": [
"dotnet5.6",
"portable-net45+win8"
]
},
"dnx451": {}
},
在 Visual Studio 2017 的最终版本中,我只能定位 netcoreapp1.1
或 dnx451
,但我看不到同时定位两者的方法。
我尝试通过设置 <TargetFramework>netcoreapp1.1;dnx451</TargetFramework>
甚至 <TargetFrameworks>netcoreapp1.1;dnx451</TargetFrameworks>
直接编辑 csproj 文件以添加第二个框架,但由于不支持的框架而在 Visual Studio 中出现错误。
那么如何在 Visual Studio 2017 的最终版本中在一个项目中同时定位 netcoreapp1.1
和 dnx451
?
您需要更改一些内容。首先,<TargetFrameworks>
标签是用于多目标的正确标签,;
是分隔符。
DNX 在 RC2 的开发过程中被弃用,所以支持 DNX 的最后一个版本是 RC1。 dnxcore5x
(以及后来的 dotnet5.x
)绰号被替换为 netstandard1.x
(对于 Class 库)和 netcoreapp1.x
对于应用程序。 dnx4xx
已被整体弃用,应使用 net4xx
。
此外,当您面向 .NET Framework(单独或与 .NET Core/NetStandard)时,您将需要定义一个运行时标识符:
<RuntimeIdentifier>win7-x86</RuntimeIdentifier>
或
<RuntimeIdentifier>win7-x64</RuntimeIdentifier>
或者您想要的默认值。
更新
作为附加信息。当您针对多个平台时,您需要使用条件来进行包解析,即 Condition="'$(TargetFramework)' == '<targetmoniker>'
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp1.1'">
<PackageReference Include="Microsoft.NETCore.App">
<Version>1.0.1</Version>
</PackageReference>
</ItemGroup>
否则你可能会遇到包恢复错误