c# - .NET Core 引用类型项目不工作

标签 c# visual-studio-2015 nuget .net-core

我在使用项目引用和 .NET Core 时遇到问题。

我在 src 文件夹中有一个库 (MyLib),在测试文件夹中有两个项目(MyLib.TestsMyLib.Tests.Support)

总结:

|-- global.json
|-- src
|   \-- MyLib
\-- test
    |-- MyLib.Tests
    \-- MyLib.Tests.Support

MyLib 已经可以通过 NuGet 获得,而测试项目还没有(也不会)。

当我在 MyLib.Tests 中引用(使用 右键单击 > 添加引用 选项)MyLibTest.Support 时,dotnet -restore 工作正常。在 visual studio 中,在“引用”下,我有一个小图标表示它是一个项目引用。当我在 MyLib.Tests 中引用(仍然使用 right click > add reference 选项)MyLib 时,dotnet-restore 也可以正常工作,但我有一个小图标表明它是一个 nuget 引用。

这是预期的行为,但我不希望我的测试项目测试“旧”NuGet 包,而是测试实际代码。

根据我在网上找到的文档和大量教程,然后在MyLib.Tests\project.json中配置MyLib依赖作为项目依赖:

{
  "dependencies": {
      "NETStandard.Library": "1.6.0",
      "SimpleDao": {
        "target": "project"
        "version": "2.0.0-*"
      },
      "MyLib.Tests.Support": "1.0.0-*"
  }
}

但是,dotnet-restore 失败了:

  1. Visual Studio 错误:NU1001 无法解析依赖项 MyLib。
  2. 控制台错误:无法为“.NETStandard,Version=v1.6”解析“MyLib”

这是我的 global.json:

{
  "projects": [ "src", "test" ],
  "sdk": {
    "version": "1.0.0-preview2-003131"
  }
}

问我任何其他可能与解释我的麻烦相关的事情

提前致谢。 (请原谅我的英语,我不是母语人士)


编辑:

我意识到我的库也有问题:实际上 MyLib 由三个库组成:

  1. MyLib,主要是接口(interface),针对 .netstandard1.1
  2. MyLib.Impl1,第一个实现,针对 .net451.netstandard1.3(尚未在 NuGet 上)
  3. MyLib.Impl2,第二个实现,目标 .net45(NuGet 上已经有第一个版本)

始终使用相同的方法来添加引用(右键单击 > 添加引用)。 我没有编辑 project.json 文件(两者都添加了这样的引用:“MyLib”:“2.0.0-*”)。

在第一个实现中,visual studio 通过 NuGet 获取依赖项(在引用选项卡中有 NuGet 图标)。而且我没有对 MyLib 界面的最新编辑。

在第二个实现中,visual studio 获取项目中的依赖项(在引用选项卡中有项目图标),并且我确实对接口(interface)进行了最新编辑。

如果我尝试编辑 project.json 以将对 MyLib 的依赖项配置为项目依赖项,我也无法恢复包,与测试的错误相同...

这是 .NET Core 中的错误(我正在尝试使用 Visual Studio 和 dotnet-cli 进行恢复)还是我做错了什么?

编辑 3:我已经在 NuGet 上发布了 MyLibMyLib.Impl2 的预发布版本。我删除了那些版本并返回到我的解决方案。现在,MyLib.Impl1MyLib.Impl2 正确定位了我的项目引用(对于 MyLib.Impl1,我必须在项目中指定目标.json 而不是 MyLib.Impl2。我不知道为什么,但至少它现在可以工作了 -_-)。

但我仍然无法修复我的测试项目。它仍然不想使用项目引用...


编辑 2:

Here是我的 github 存储库,您可以在其中找到我的全部代码(在迁移分支中)。

最佳答案

嗯,这是一个艰难的...

我正在将我的库从完整的 .NET 移植到 .NET Core,在此过程中,我错误地命名了一个项目(大写/小写问题)。我用正确的大小写重命名了它,但我没有更改 .sln 中的任何内容。

当我将此项目添加为另一个项目中的引用时,Visual Studio 使用的是 .sln 中的 olg 未更改名称,而不是当前名称。

当出现这样的案例问题时,看起来在 NuGet 上比在本地项目上更容易找到引用......

关于c# - .NET Core 引用类型项目不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40027431/

相关文章:

c# - 对具有指向其他类的指针的类进行子类化

c# - 在 Blazor WebAssembly 中调整图像大小 (jpg)?

visual-studio-2015 - 设置 Visual Studio TFS 超时

visual-studio-2015 - 保存转储时出错。无效指针

c# - Visual Studio 2015 无法识别 svg、rect、g、circle 等

msbuild - 如何定义 msbuild 寻找包的位置?

msbuild - 忽略 Azure Pipelines 中 .vdproj 项目的 NuGet 包还原

c# - 来自 WCF 服务的响应对象

c# - 如何根据其值动态更改 asp 标签的 CSS 类

c# - 未找到 Stripe.net 的命名空间