.NET Core参考类型项目无法正常工作

时间:2016-10-13 17:31:11

标签: 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获得,并且测试项目不是(并且不会成为)。

当我在right click > add reference中引用(使用MyLibTest.Support选项)MyLib.Tests时,dotnet-restore正常工作。在visual studio中,在" References"下,我有一个小图标表示它是一个项目参考。当我在right click > add reference中引用(仍然使用MyLib选项)MyLib.Tests时,dotnet-restore也能正常工作,但我有一个小图标表示它是一个nuget参考。

这是预期的行为,但我不希望我的测试项目测试" old" 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 The dependency MyLib could not be resolved.
  2. 控制台错误:Unable to resolve 'MyLib' for '.NETStandard,Version=v1.6'
  3. 这是我的global.json:

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

    问我还有什么其他可以解释我的麻烦的事情

    提前致谢。 (对不起我的英语,我不是母语人士)

    修改

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

    1. MyLib,主要是接口,定位.netstandard1.1
    2. MyLib.Impl1,首次实施,定位.net451.netstandard1.3(尚未在NuGet上)
    3. MyLib.Impl2,第二个实现,定位.net45(NuGet上已有第一个版本)
    4. 始终使用相同的方法添加引用(right click > add reference)。 我没有编辑project.json文件(两者都是这样添加引用:&#34; MyLib&#34;:&#34; 2.0.0 - *&#34;)。< / p>

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

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

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

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

      编辑3:我在NuGet上发布了MyLibMyLib.Impl2的预发布版本。我删除了那些版本并回到我的解决方案。现在,MyLib.Impl1MyLib.Impl2正确定位我的项目参考(对于MyLib.Impl1,我必须在project.json中指定目标,而不是MyLib.Impl2。我不会&#39 ; t知道原因,但至少它现在有效-_-)。

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

      编辑2:

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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