Moq不想在net core 3.1 上使用ActiroSoftware
我有以下问题:创建一个具有以下结构的netcore3.1项目:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp3.1</TargetFrameworks>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Moq" Version="4.14.7" />
<PackageReference Include="Actiprosoftware.Controls.WPF" Version="20.1.0" />
</ItemGroup>
</Project>
然后在Program.cs中尝试写入以下内容:
using Moq;
namespace moqtest
{
class Program
{
static void Main(string[] args)
{
var q = It.IsAny<string>();
}
}
}
注意,由于以下错误,这不会编译:
error CS0234: The type or namespace name 'IsAny' does not exist in the namespace 'It' (are you missing an assembly reference?)
此外,隐式指定命名空间将起作用:
var q = Moq.It.IsAny<string>();
我研究过msbuild诊断,似乎所有东西都与netcoreapp3.1兼容,但当你编译它时,它似乎不再识别it类。
请帮忙!
打开View > Object Browser
,搜索It
。您会注意到,第一个结果是由ActiproSoftware.BarCode.Wpf.dll
引入的名为It
的命名空间
它恰好也是一个空的名称空间,但这无关紧要。如果它下面确实包含任何内容,您可以将它们称为It.Something
。所以现在发生的情况是,即使在执行了using Moq
之后,It
对编译器来说仍然是不明确的。
这个愚蠢的空命名空间的存在迫使您使用Moq.
来限定调用