.net core 为什么';NET Core和xUnit能识别我导入的名称空间吗?
我有一个编译的项目,我想用xUnit测试它。然而,尽管项目允许我添加引用和构建,但只要我向测试类添加.net core 为什么';NET Core和xUnit能识别我导入的名称空间吗?,.net-core,xunit.net,.net Core,Xunit.net,我有一个编译的项目,我想用xUnit测试它。然而,尽管项目允许我添加引用和构建,但只要我向测试类添加using语句,我就会得到红色的曲线,错误是“找不到类型或名称空间” 即使我要测试的项目的xproj已经添加到引用中,并且名称空间确实存在。一定是我做了什么,但我看不出是什么。使用.net的早期版本,我已经添加了数百次对测试项目的引用,没有任何问题 那么.NET的工作方式有什么不同,为什么它不能识别引用程序集中的名称空间呢 更新:我已删除xUnit并使MSTest正常工作,但我遇到了相同的问题。因
using
语句,我就会得到红色的曲线,错误是“找不到类型或名称空间”
即使我要测试的项目的xproj已经添加到引用中,并且名称空间确实存在。一定是我做了什么,但我看不出是什么。使用.net的早期版本,我已经添加了数百次对测试项目的引用,没有任何问题
那么.NET的工作方式有什么不同,为什么它不能识别引用程序集中的名称空间呢
更新:我已删除xUnit并使MSTest正常工作,但我遇到了相同的问题。因此,这可能是我设置dotnetcore的方式的一个特点,json文件中的引用比其他任何东西都重要。这种结构在.NET Core 1.0中适用: global.json
{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-preview2-003121"
}
}
{
"dependencies": { },
"frameworks": {
"netstandard1.3": {
"dependencies": {
"NETStandard.Library": "1.6.0"
}
}
},
"version": "1.0.0"
}
{
"dependencies": {
"dotnet-test-xunit": "2.2.0-preview2-build1029",
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
},
"MyLibrary": {
"target": "project",
"version": "1.0.0"
},
"xunit": "2.1.0"
},
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dnxcore50",
"portable-net45+win8"
]
}
},
"testRunner": "xunit",
"version": "1.0.0"
}
src/MyLibrary/project.json
{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-preview2-003121"
}
}
{
"dependencies": { },
"frameworks": {
"netstandard1.3": {
"dependencies": {
"NETStandard.Library": "1.6.0"
}
}
},
"version": "1.0.0"
}
{
"dependencies": {
"dotnet-test-xunit": "2.2.0-preview2-build1029",
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
},
"MyLibrary": {
"target": "project",
"version": "1.0.0"
},
"xunit": "2.1.0"
},
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dnxcore50",
"portable-net45+win8"
]
}
},
"testRunner": "xunit",
"version": "1.0.0"
}
test/MyLibrary.test/project.json
{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-preview2-003121"
}
}
{
"dependencies": { },
"frameworks": {
"netstandard1.3": {
"dependencies": {
"NETStandard.Library": "1.6.0"
}
}
},
"version": "1.0.0"
}
{
"dependencies": {
"dotnet-test-xunit": "2.2.0-preview2-build1029",
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
},
"MyLibrary": {
"target": "project",
"version": "1.0.0"
},
"xunit": "2.1.0"
},
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dnxcore50",
"portable-net45+win8"
]
}
},
"testRunner": "xunit",
"version": "1.0.0"
}
使用此目录和项目结构,Visual Studio测试资源管理器和
dotnet测试都可以运行,并且可以运行xUnit测试。查看project.json
和相关代码会很有帮助。我的猜测是,您没有正确地引用测试项目中的主项目。您是否在project.json中使用target:project
?(参见我回答中的示例)我将您对json文件的建议直接剪切粘贴到我的项目中,但我遇到了同样的问题。当我在测试项目中添加对我的类型的引用时,我在名称空间下得到了红色的曲线,我无法引用项目中任何有用的内容。一位同事建议他们读到xUnit和MSTest还不能处理从web项目导入的程序集。这是我需要研究的东西,但如果是真的,那么对于发布团队来说,这是一个重大的失礼IMO@Matt运行dotnet restore
时会发生什么情况?编译时会发生什么?还原完成得很好。只是一些关于锁定文件不变的注释,尽管它也恢复了Iisintegration.Tools。编译-如果通过使用导入名称空间,我会得到CS2046-类型或名称空间错误。如果我把它们评论出来,一切都好。无论发生什么情况,基本断言都可以正常运行(Assert.Equal(2,2);