我正在将一个库移植到.NET Core 2.1,因为它支持DbProviderFactory.在大多数情况下它已经很好 - 它编译,但运行时我得到一个错误:
System.ArgumentException:'在已注册的.NET数据提供程序列表中找不到指定的不变名'System.Data.SqlClient'.
我曾经DbProviderFactories.GetFactoryClasses()检查过是否安装了任何提供程序,并且似乎没有(结果表中有0行).
所以我想我的问题是,如何为.NET Core安装数据提供程序?我在机器上安装了.NET Framework 4.5,它正在挑选数据提供程序而没有任何问题.我不想System.Data.SqlClient作为本地项目的Nuget 安装,因为这会添加一个依赖性,使得DbProviderFactory无关紧要.也就是说,我试图安装System.Data.SqlClient在一个使用我的库作为测试的项目中,但它仍然没有被选中.
根据官方的 TestCase 文档,您可以在 TestCase 过滤器中使用“不包含”(!~)过滤器。
我正在尝试在 Azure Devops 管道中使用此过滤器,但根据运行该管道时出现的错误,该过滤器不受支持:
##[error]Incorrect format for TestCaseFilter Error: Invalid Condition 'FullyQualifiedName!~DSN'. Specify the correct format and try again. Note that the incorrect format can lead to no test getting executed.
Run Code Online (Sandbox Code Playgroud)
此功能是在 16.0 预览版中添加的。管道使用 VSTest 16.6.1,如输出中的这些行所示:
C:\agent\_work\_tool\VsTest\16.6.1\x64\tools\net451\Common7\IDE\Extensions\TestPlatform\vstest.console.exe "@C:\agent\_work\_temp\xulnpcmgdnx.tmp"
Microsoft (R) Test Execution Command Line Tool Version 16.6.1
Run Code Online (Sandbox Code Playgroud)
但是,仍然不支持“不包含”运算符。
我试过了:
我不知所措,是否还有其他我不知道的依赖?这可能是微软方面的问题/错误吗?任何帮助或指示将不胜感激。
我正在使用.NET Core构造函数注入。在一位同事的代码审查中,他提出了一个问题,即我是否应该检查控制器中注入的依赖项的空值。
由于该框架负责创建服务的实例,因此在我看来,它将处理所有错误,并且永远不会将空值依赖项传递给构造函数。不过,我没有任何事实证据,因此我想知道是否有必要进行null检查。
例如,是否应该检查以下代码中的“ myService”是否为null?(假设代码配置为使用DI)
public class MyController
{
private readonly IMyService _myService;
public MyController(IMyService myService)
{
_myService = myService;
}
}
Run Code Online (Sandbox Code Playgroud) c# dependency-injection constructor-injection null-check .net-core