C# .NET核心引用类型项目不工作
我在项目参考和.NET核心方面遇到问题 我在src文件夹中有一个库(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中引用(使用右键单击>添加引
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还原
失败:
NU1001无法解析依赖项MyLib。
无法解析“.NETStandard,Version=v1.6”的“MyLib”
{
"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更改为targetnetstandard1.1
,我也会遇到相同的错误。我在lib体系结构中发现了其他类似的问题。。。我刚刚用新发现编辑了我的帖子!你是说你把MyLib打包成NuGet包了吗?请解释一下“MyLib已经通过NuGet提供”的含义?如果可能的话,请在这里分享一个示例解决方案,以帮助我们重现您的问题。