目标框架列表中缺少.NET Core

时间:2018-12-13 15:38:54

标签: c# .net visual-studio .net-core visual-studio-2017

我正在使用Visual Studio 2017 Enterprise,尝试将单元测试项目上的目标框架更改为.NET Core,以便可以使用xUnit。我没有在可用框架列表中看到它。

在可用框架列表中,我看到:

.NET Framework 2.0 -> 4.7.1 and several Unity Frameworks.  

尽管事实上我已经安装了.NET Core SDK 2.1.200(x64),2.1.202(x64)和2.1.500(x64)。

2 个答案:

答案 0 :(得分:0)

似乎您有两个选择,两个都很简单:

将目标框架更改为netcoreapp *

编辑您的项目文件并更改

<TargetFramework>net461</TargetFramework>

<TargetFramework>netcoreapp2.1</TargetFramework>

(或您希望定位的任何.NET Core版本。我相信SDK 2.1.500是netcoreapp2.1。)

在.NET Framework项目中使用XUnit

创建一个.NET Framework类库项目,然后安装xunit NuGet软件包。然后,您可以像平常一样开始使用XUnit,它可以引用您的Web项目。

要在VS中运行测试,您还需要xunit.runner.visualstudio软件包。

答案 1 :(得分:0)

Visual Studio仅显示受支持的转换。从.NET Framework转换为.NET Core并不像更改版本号那么简单。

您可以使用try-convert对项目文件进行必要的修改。确保首先使用--diff-only检查更改。

您应该查看Nate McMaster's迁移指南和Additions to the csproj format for .NET Core来了解所做的更改。

Microsoft不支持该工具,也不能保证执行100%转换。

  

完全不支持此工具。

     

此工具适用于谁?

     

该工具适用于希望在项目移植到.NET Core(或.NET SDK风格的项目)方面获得一点帮助的人。

     

顾名思义,此工具不能保证将项目完全转换为100%的工作状态。该工具很保守,并且会尽力确保转换后的项目仍可以加载到Visual Studio中并进行构建。但是,有很多因素可能导致项目无法加载或构建此工具明确无法涵盖的项目。这些包括:

     
      
  • 您的解决方案中可能具有的复杂的自定义版本
  •   
  • 与.NET Core不兼容的API使用情况
  •   
  • 不受支持的项目类型(例如Xamarin,WebForms或WCF项目)
  •   
     

如果您的大部分代码库通常都可以迁移到.NET Core(例如许多没有平台特定代码的类库),那么此工具应该会有所帮助。

     

强烈建议您在受源代码控制的项目上使用此工具。

强调我的。

为什么?

.NET Core和.NET Framework使用非常不同的csproj格式,并且以不同的方式处理程序包引用,尤其是临时依赖性,即另一个程序包所需的程序包。

.NET Framework packages.config中包含所有软件包,这意味着您不知道真正需要哪些软件包。在.NET Core中,没有packages.configcsproj文件仅包含顶级依赖关系的PackageReference元素。

在旧的csproj格式中,您必须显式包括每个源文件。在新格式中,所有源文件都会自动包含在内,从而使文件非常易于编辑。

进行这些更改并非易事。直到最近,a manual process。就我个人而言,我只是删除了所有内容,复制了最小的XML,然后添加了程序包引用,直到获得成功的构建。即使那样,我也必须手动添加有关包含/排除/复制到输出文件的行。如果我有带有条件等的自定义构建步骤,那么事情会变得困难得多。