【问题标题】:Referencing a .Net Core 3.1 project from a .Net Standard Class Library从 .Net 标准类库引用 .Net Core 3.1 项目
【发布时间】:2020-01-09 18:32:35
【问题描述】:

所以我有一个.NET Core 3.1 项目。我正在尝试创建一个单元测试项目来配合它。为此,我创建了一个.NET Standard 2.1 Class Library。然后我尝试添加对主项目的引用,以便能够从那里引用代码。这不起作用,因为我收到以下编译错误:

'..\MyProj\MyProj.csproj' 以 'netcoreapp3.1' 为目标。它不可能是 由以“.NETStandard,Version=v2.1”为目标的项目引用。 Project MyProj 与 netstandard2.1 不兼容 (.NET 标准,版本=v2.1)。 MyProj 项目支持:netcoreapp3.1 (.NETCoreApp,Version=v3.1) 测试(test\Test)

所以这对我来说确实有意义,因为我理解为什么 .NET Core 无法引用 .NET Standard 项目。
但是我该如何创建单元测试项目呢?是否可以创建.NET Core 3.1 Class Library?从我读过的所有内容来看,这似乎不存在。

如何设置引用主项目的单元测试项目?

【问题讨论】:

  • 你不应该那样做。请检查这个 -> stackoverflow.com/questions/59444690/…
  • 我在创建 .NET Core 3.1 类库时没有任何问题。你遇到了什么问题?
  • @JonathonChase - 我没有创建 .NET Core 3.1 类库的任何选项,只有一个 .NET 标准类库。
  • @panoskarajohn - 是的,我知道为什么它不应该是可能的。但是,我没有关于如何设置单元测试项目的解决方案。
  • @panoskarajohn hmmm 所以我可以找到这样的教程:tutorialspoint.com/dotnet_core/… 似乎表明在 .NET Core 类库的项目创建中应该有一个选项。但是我的项目模板中没有这个选项,这太奇怪了!

标签: c# .net unit-testing .net-core .net-standard


【解决方案1】:

.NET Standard 是作为不同 .NET 实现的接口而创建的。例如,这允许您在 .NET Core 和完整的 .NET 框架之间共享代码。我会将您的库创建为 .NET Standard 2.0 项目,然后您可以在 .NET Core 3.1 应用程序和单元测试项目中引用它。

我只建议使用 .NET Standard,因为它通常比 .NET Framework 或 .NET Core 库更便携。您可以使用 .NET Standard 面向更多平台,例如 Xamarin、桌面或 Web。

【讨论】:

  • 是的,但是单元测试项目应该是什么?我发现的教程说单元测试项目应该是一个 .NET 标准类库,如果我不需要引用主项目,它确实可以正常工作。
  • @Sean 测试项目应该是测试项目。他们有自己的模板。我不知道你在看什么教程,但你应该找到不同的。它们要么已经过时,要么一开始就是错误的。
  • @Sean,首先您需要确定是使用 NUnit、xUnit 还是 MSTest 作为测试框架。然后,您可以使用您的特定测试套件创建一个基于 .NET Core 的测试项目。您将能够从 .NET Core 3.1 引用 .NET Standard 2.1 库。
  • 我只建议使用 .NET Standard,因为它通常比 .NET Framework 或 .NET Core 库更便携。您可以使用 .NET Standard 定位更多平台,例如 Xamarin、桌面或 Web。
【解决方案2】:

我认为您只需要在项目中使用 .Net Core 3.1,而不是 NetStandard。我用这种方式,没有任何问题。我猜你真的不需要你的单元测试是可移植的吗?

【讨论】:

    猜你喜欢
    • 2021-05-23
    • 2018-03-29
    • 2016-10-18
    • 1970-01-01
    • 2022-11-01
    • 2016-11-18
    • 1970-01-01
    • 2017-08-13
    相关资源
    最近更新 更多