Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET核心引用类型项目不工作_C#_Visual Studio 2015_Nuget_.net Core - Fatal编程技术网

C# .NET核心引用类型项目不工作

C# .NET核心引用类型项目不工作,c#,visual-studio-2015,nuget,.net-core,C#,Visual Studio 2015,Nuget,.net Core,我在项目参考和.NET核心方面遇到问题 我在src文件夹中有一个库(MyLib),在test文件夹中有两个项目(MyLib.Tests和MyLib.Tests.Support) 总结: |-- global.json |-- src | \-- MyLib \-- test |-- MyLib.Tests \-- MyLib.Tests.Support MyLib已经通过NuGet提供,而测试项目还没有(将来也不会) 当我在MyLib.Tests中引用(使用右键单击>添加引

我在项目参考和.NET核心方面遇到问题

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

总结:

|-- global.json
|-- src
|   \-- MyLib
\-- test
    |-- MyLib.Tests
    \-- MyLib.Tests.Support
MyLib已经通过NuGet提供,而测试项目还没有(将来也不会)

当我在
MyLib.Tests
中引用(使用
右键单击>添加引用
选项)
MyLibTest.Support
时,
dotnet还原
工作正常。在VisualStudio中的“引用”下,我有一个小图标,指示它是一个项目引用。当我在
MyLib.Tests
中引用(仍然使用
右键单击>添加引用
选项)
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还原
失败:

  • Visual Studio错误:
    NU1001无法解析依赖项MyLib。
  • 控制台错误:
    无法解析“.NETStandard,Version=v1.6”的“MyLib”
  • 这是我的global.json:

    {
      "projects": [ "src", "test" ],
      "sdk": {
        "version": "1.0.0-preview2-003131"
      }
    }
    
    问我还有什么可以解释我的问题的吗

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


    编辑:

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

  • MyLib
    ,主要是接口,目标是
    。netstandard1.1
  • MyLib.Impl1
    ,第一个实现,目标是
    .net451
    .netstandard1.3
    (尚未在NuGet上)
  • MyLib.Impl2
    ,第二个实现,目标是
    .net45
    (NuGet上已经有了它的第一个版本)
  • 始终使用相同的方法添加引用(
    右键单击>添加引用
    我没有编辑project.json文件(两个文件都添加了如下引用:“MyLib”:“2.0.0-*”)

    在第一个实现中,VisualStudio通过NuGet获取依赖项(references选项卡中有NuGet图标)。我没有对MyLib接口进行最新的编辑

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

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

    它是.NET Core中的一个bug(我正在尝试使用Visual Studio和dotnet cli进行恢复)还是我做错了什么

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

    但我仍然无法修复我的测试项目。它仍然不想与项目参考一起工作


    编辑2:


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

    嗯,这是一个艰难的过程

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

    当我在另一个项目中添加此项目作为引用时,VisualStudio使用的是.sln中的olg unchanged名称,而不是当前名称


    当出现这样的案例问题时,在NuGet上查找参考似乎比在本地项目上更容易…

    如果删除
    “版本”:“2.0.0-*”
    行,只在那里保留
    “目标”:“project”
    ,会发生什么?这是一样的。在控制台行中,错误是:
    无法解析“.NETStandard,Version=v1.6”的“MyLib”
    (我将编辑我的初始帖子以添加此内容)。实际上,
    MyLib
    的目标是netstandard1.1(为了与.NET4.5兼容),但这不应该是个问题。用netstandard1.1编写的所有内容都与较新版本兼容…即使我将MyLib.Tests更改为target
    netstandard1.1
    ,我也会遇到相同的错误。我在lib体系结构中发现了其他类似的问题。。。我刚刚用新发现编辑了我的帖子!你是说你把MyLib打包成NuGet包了吗?请解释一下“MyLib已经通过NuGet提供”的含义?如果可能的话,请在这里分享一个示例解决方案,以帮助我们重现您的问题。