.NET Core 参考类型项目不工作
.NET Core Reference Type project not working
我在使用项目引用和 .NET Core 时遇到问题。
我在 src 文件夹中有一个库 (MyLib
),在测试文件夹中有两个项目(MyLib.Tests
和 MyLib.Tests.Support
)
总结:
|-- global.json
|-- src
| \-- MyLib
\-- test
|-- MyLib.Tests
\-- MyLib.Tests.Support
MyLib 已经可以通过 NuGet 使用,而测试项目不是(也不会)。
当我在 MyLib.Tests
中引用(使用 right click > add reference
选项)MyLibTest.Support
时,dotnet-restore
工作正常。在 visual studio 中,在 "References" 下,我有一个小图标,表示它是项目参考。当我在 MyLib.Tests
中引用(仍然使用 right click > add reference
选项)MyLib
时,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
失败了:
- Visual Studio 错误:
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"
}
}
问我任何其他可能与解释我的麻烦相关的事情
提前致谢。
(请原谅我的英语,我不是母语人士)
编辑:
我意识到我的库也有问题:实际上 MyLib
由三个库组成:
MyLib
,主要是接口,针对 .netstandard1.1
MyLib.Impl1
,第一次实施,针对 .net451
和 .netstandard1.3
(尚未在 NuGet 上)
MyLib.Impl2
,第二个实现,目标 .net45
(NuGet 上已经有它的第一个版本)
始终使用相同的方法添加参考 (right click > add reference
)。 我没有编辑 project.json 文件(两者都添加了这样的参考:"MyLib":“2.0.0-*”)。
在第一个实现中,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
。我不不知道为什么,但至少它现在有效 -_-).
但我仍然无法修复我的测试项目。它仍然不想使用项目引用...
编辑 2:
Here 是我的 github 存储库,您可以在其中找到我的全部代码(在迁移分支中)。
好吧,这是一个艰难的过程......
我正在将我的库从完整的 .NET 移植到 .NET Core,在此过程中,我给一个项目命名错误(upper/lower 个案问题)。我用正确的大小写重命名了它,但我没有更改 .sln 中的任何内容。
当我将此项目添加为另一个项目的引用时,Visual Studio 使用的是 .sln 中的 olg 未更改名称,而不是当前名称。
当出现这样的案例问题时,在 NuGet 上查找参考似乎比在本地项目上更容易...
我在使用项目引用和 .NET Core 时遇到问题。
我在 src 文件夹中有一个库 (MyLib
),在测试文件夹中有两个项目(MyLib.Tests
和 MyLib.Tests.Support
)
总结:
|-- global.json
|-- src
| \-- MyLib
\-- test
|-- MyLib.Tests
\-- MyLib.Tests.Support
MyLib 已经可以通过 NuGet 使用,而测试项目不是(也不会)。
当我在 MyLib.Tests
中引用(使用 right click > add reference
选项)MyLibTest.Support
时,dotnet-restore
工作正常。在 visual studio 中,在 "References" 下,我有一个小图标,表示它是项目参考。当我在 MyLib.Tests
中引用(仍然使用 right click > add reference
选项)MyLib
时,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
失败了:
- Visual Studio 错误:
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"
}
}
问我任何其他可能与解释我的麻烦相关的事情
提前致谢。 (请原谅我的英语,我不是母语人士)
编辑:
我意识到我的库也有问题:实际上 MyLib
由三个库组成:
MyLib
,主要是接口,针对.netstandard1.1
MyLib.Impl1
,第一次实施,针对.net451
和.netstandard1.3
(尚未在 NuGet 上)MyLib.Impl2
,第二个实现,目标.net45
(NuGet 上已经有它的第一个版本)
始终使用相同的方法添加参考 (right click > add reference
)。 我没有编辑 project.json 文件(两者都添加了这样的参考:"MyLib":“2.0.0-*”)。
在第一个实现中,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
。我不不知道为什么,但至少它现在有效 -_-).
但我仍然无法修复我的测试项目。它仍然不想使用项目引用...
编辑 2:
Here 是我的 github 存储库,您可以在其中找到我的全部代码(在迁移分支中)。
好吧,这是一个艰难的过程......
我正在将我的库从完整的 .NET 移植到 .NET Core,在此过程中,我给一个项目命名错误(upper/lower 个案问题)。我用正确的大小写重命名了它,但我没有更改 .sln 中的任何内容。
当我将此项目添加为另一个项目的引用时,Visual Studio 使用的是 .sln 中的 olg 未更改名称,而不是当前名称。
当出现这样的案例问题时,在 NuGet 上查找参考似乎比在本地项目上更容易...