如何在VS2017最终版本中选择多个框架进行目标设置?

24 浏览
0 Comments

如何在VS2017最终版本中选择多个框架进行目标设置?

在ASP.NET Core中,我可以在一个Project.json文件中同时指定多个框架(例如netcoreapp1.1dnx451):\n\"frameworks\": {\n \"netcoreapp1.1\": {\n \"dependencies\": {\n \"Microsoft.NETCore.App\": {\n \"version\": \"1.1.0\",\n \"type\": \"platform\"\n }\n },\n \"imports\": [\n \"dotnet5.6\",\n \"portable-net45+win8\"\n ]\n },\n \"dnx451\": {}\n },\n\n在Visual Studio 2017的最终版本中,我只能选择netcoreapp1.1dnx451作为目标,但我找不到同时选择两者的方法。\n我尝试直接编辑csproj文件以添加第二个框架,设置netcoreapp1.1;dnx451netcoreapp1.1;dnx451,但在Visual Studio中出现不支持的框架错误。\n那么,在Visual Studio 2017的最终版本中,如何将netcoreapp1.1dnx451同时作为目标框架设置到一个项目中呢?

0
0 Comments

如何在VS2017 final中针对多个框架进行目标设置?

在使用VS2017 final进行多框架目标设置时,需要进行一些修改。首先,<TargetFrameworks>标签是用于多目标设置的正确标签,而;则是分隔符。

在RC2版本开发期间,DNX已被弃用,所以最后一个支持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)' == '<targetmoniker>'

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

否则可能会出现包恢复错误。

所以,例如对于类库,正确的设置应该是<TargetFrameworks>netstandard1.6;net462</TargetFrameworks>

是的。但是对于EF Core Tools来说,一个常见的解决方法是将类库也设置为netcoreapp1.x,否则工具将无法找到DbContext(在ASP.NET Core应用程序之外放置DbContext的常见做法)。不知道这个问题是否已在新的工具中修复,但在VS2015中使用project.json和.NET Core Tools for VS时存在此限制,详情请参阅learn.microsoft.com/en-us/ef/core/miscellaneous/cli/…

-是的,至今为止是这样。但是大部分project.json设置都没有UI界面。

-是的,但我希望这个问题能在VS2017发布时得到修复。

0