我遇到项目引用和.NET Core的问题。
我在src文件夹中有一个库(MyLib
),在测试文件夹中有两个项目(MyLib.Tests
和MyLib.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
失败了:
NU1001 The dependency MyLib could not be resolved.
Unable to resolve 'MyLib' for '.NETStandard,Version=v1.6'
这是我的global.json:
{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-preview2-003131"
}
}
问我还有什么其他可以解释我的麻烦的事情
提前致谢。 (对不起我的英语,我不是母语人士)
修改
我意识到我的lib也有问题:实际上MyLib
由三个库组成:
MyLib
,主要是接口,定位.netstandard1.1
MyLib.Impl1
,首次实施,定位.net451
和.netstandard1.3
(尚未在NuGet上)MyLib.Impl2
,第二个实现,定位.net45
(NuGet上已有第一个版本)始终使用相同的方法添加引用(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上发布了MyLib
和MyLib.Impl2
的预发布版本。我删除了那些版本并回到我的解决方案。现在,MyLib.Impl1
和MyLib.Impl2
正确定位我的项目参考(对于MyLib.Impl1
,我必须在project.json中指定目标,而不是MyLib.Impl2
。我不会&#39 ; t知道原因,但至少它现在有效-_-)。
但我仍然无法修复我的测试项目。它仍然不想使用项目参考...
编辑2:
Here是我的github存储库,您可以在其中找到我的整个代码(在迁移分支中)。
答案 0 :(得分:0)
嗯,这是一个艰难的...
我将我的lib从完整的.NET移植到.NET Core,在此过程中,我错误地命名了一个项目(大写/小写问题)。我用正确的案例重命名它,但我没有改变.sln中的任何内容。
当我在另一个项目中添加此项目作为参考时,Visual Studio使用的是.sln中的olg未更改名称而不是当前名称。
当出现像这样的案例问题时,看起来在NuGet上找到引用比在本地项目上找到更容易...