C#开发者的顶级工具和框架

作者:微信公众号:【架构师老卢】
11-19 18:44
47

1. NCrunch

NCrunch 是一款适用于 Visual Studio 的自动化并发测试工具。它在后台持续运行你的测试,针对你的代码提供实时反馈。

工作原理

NCrunch 在与你的集成开发环境(IDE)所用不同的 CPU 核心上,于后台运行你的测试。这使得你在 NCrunch 执行测试时能够不受干扰地继续工作。它还能通过直接在编辑器中展示测试结果和代码覆盖率来提供即时反馈。如果你需要更强的功能,NCrunch 可以利用分布式处理扩展到其他机器上运行。

安装

  • 从官方网站下载并安装 NCrunch。
  • 按照安装说明将其与 Visual Studio 进行集成。

示例

Calculator.cs

public class Calculator
{
    public static int Add(int a, int b)
    {
        return a + b;
    }
}

CalculatorTests.cs

using NUnit.Framework;
[TestFixture]
public class CalculatorTests
{
    [Test]
    public void AdditionTest()
    {
        var result = Calculator.Add(2, 3);
        Assert.AreEqual(5, result);
    }
}

2. StyleCop

StyleCop 用于分析 C# 源代码,以强制实施一组代码风格和一致性规则。

工作原理

StyleCop 与你的开发环境相集成,在你编写代码时对其进行分析。它依据一组预定义规则来检查你的代码,并针对任何违反规则的情况提供反馈。这有助于在整个项目中保持一致的编码风格。

安装

安装 StyleCop.Analyzers NuGet 包:

Install-Package StyleCop.Analyzers

示例

StyleCopSettings.stylecop

<StyleCopSettings>
  <Analyzers>
    <Analyzer AnalyzerId="StyleCop.CSharp.DocumentationRules">
      <Rules>
        <Rule Name="SA1600" Enabled="true" />
      </Rules>
    </Analyzer>
  </Analyzers>
</StyleCopSettings>

Program.cs

public class Program
{
    public static void Main(string[] args)
    {
        Console.WriteLine("Hello, StyleCop!");
    }
}

3. Hangfire

Hangfire 是一个库,它能让你在.NET 和.NET Core 应用程序中执行后台处理任务。

工作原理

Hangfire 允许你创建和管理后台作业。这些作业可以被安排在特定时间或按照特定时间间隔运行,并且 Hangfire 能确保它们可靠地执行。它使用一种持久化存储机制来跟踪作业状态,使其在应用程序重启时也能保持健壮性。

安装

安装 Hangfire NuGet 包:

Install-Package Hangfire

示例

Startup.cs

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddHangfire(x => x.UseSqlServerStorage("your_connection_string"));
        services.AddHangfireServer();
    }
    public void Configure(IApplicationBuilder app, IBackgroundJobClient backgroundJobs)
    {
        app.UseHangfireDashboard();
        backgroundJobs.Enqueue(() => Console.WriteLine("Hello, Hangfire!"));
    }
}

Program.cs

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }
    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
           .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}

4. NUKE

NUKE 是一个用于.NET 项目的构建自动化系统。

工作原理

NUKE 允许你使用 C# 定义构建脚本。这些脚本可以包含诸如编译代码、运行测试以及部署应用程序等任务。NUKE 与你现有的.NET 项目相集成,并提供了一套流畅的应用程序编程接口(API)来定义构建步骤。

安装

安装 NUKE 全局工具:

dotnet tool install Nuke.GlobalTool --global

示例

build.cs

class Build : NukeBuild
{
    public static int Main() => Execute<Build>(x => x.Compile);
    Target Compile => _ => _
       .Executes(() =>
        {
            MSBuild(s => s.SetTargetPath(Solution));
        });
}

Program.cs

public class Program
{
    public static void Main(string[] args)
    {
        Console.WriteLine("Hello, NUKE!");
    }
}

5. Visual Studio 代码地图

Visual Studio 代码地图可帮助你可视化代码组件之间的关系。

工作原理

代码地图允许你创建图表,展示代码不同部分之间的依赖关系和关联情况。这有助于你理解复杂的代码库,并识别出需要重构的区域。

安装

Visual Studio 代码地图包含在 Visual Studio 企业版中。请确保你已安装了企业版。

6. Autofac

Autofac 是一个适用于.NET 的控制反转(IoC)容器。

工作原理

Autofac 允许你管理应用程序中的依赖关系。你可以注册服务及其实现,然后 Autofac 会处理这些服务的创建以及生命周期管理。这有助于解耦你的代码,使其更易于管理依赖关系。

安装

安装 Autofac NuGet 包:

Install-Package Autofac

示例

ILogger.cs

public interface ILogger
{
    void Log(string message);
}

ConsoleLogger.cs

public class ConsoleLogger : ILogger
{
    public void Log(string message)
    {
    Console.WriteLine(message);
    }
}

Program.cs

public class Program
{
    public static void Main(string[] args)
    {
        var builder = new ContainerBuilder();
        builder.RegisterType<ConsoleLogger>().As<ILogger>();
        var container = builder.Build();
        using (var scope = container.BeginLifetimeScope())
        {
            var logger = scope.Resolve<ILogger>();
            logger.Log("Hello, Autofac!");
        }
    }
}

7. MediatR

MediatR 是.NET 中一个简单且实用的中介者模式实现。

工作原理

MediatR 允许你实现中介者模式,该模式有助于解耦请求的发送者和接收者。你定义请求和对应的处理程序,然后 MediatR 负责将请求路由到相应的处理程序。

安装

安装 MediatR NuGet 包:

Install-Package MediatR

示例

Ping.cs

public class Ping : IRequest<string> { }

PingHandler.cs

public class PingHandler : IRequestHandler<Ping, string>
{
    public Task<string> Handle(Ping request, CancellationToken cancellationToken)
    {
        return Task.FromResult("Pong");
    }
}

Program.cs

public class Program
{
    public static async Task Main(string[] args)
    {
        var services = new ServiceCollection();
        services.AddMediatR(typeof(Program).Assembly);
        var provider = services.BuildServiceProvider();
        var mediator = provider.GetRequiredService<IMediator>();
        var response = await mediator.Send(new Ping());
        Console.WriteLine(response);
    }
}

8. NSpec

NSpec 是一个适用于.NET 的测试框架,它鼓励行为驱动开发(BDD)。

工作原理

NSpec 允许你以行为驱动开发的风格编写测试,这种风格侧重于应用程序的行为。测试以自然语言风格编写,使其易于阅读和理解。

安装

安装 NSpec NuGet 包:

Install-Package NSpec

示例

Calculator.cs

public class Calculator
{
    public static int Add(int a, int b)
    {
        return a + b;
    }
}

describe_Calculator.cs

class describe_Calculator : nspec
{
    void when_adding_numbers()
    {
        it["should return the sum of two numbers"] = () =>
        {
            var result = Calculator.Add(2, 3);
            result.should_be(5);
        };
    }
}

9. Bogus

Bogus 是一个适用于.NET 的简单且实用的伪数据生成器。

安装

安装 Bogus NuGet 包:

Install-Package Bogus

示例

User.cs

public class User
{
    public string Name { get; set; }
    public string Email { get; set; }
}

Program.cs

public class Program
{
    public static void Main(string[] args)
    {
        var faker = new Faker<User>()
           .RuleFor(u => u.Name, f => f.Name.FullName())
           .RuleFor(u => u.Email, f => f.Internet.Email());
        var user = faker.Generate();
        Console.WriteLine($"Name: {user.Name}, Email: {user.Email}");
    }
}

10. FluentValidation

FluentValidation 是一个在.NET 中颇受欢迎的用于构建强类型验证规则的库。

安装

安装 FluentValidation NuGet 包:

Install-Package FluentValidation

示例

User.cs

public class User
{
    public string Name { get; set; }
    public string Email { get; set; }
}

UserValidator.cs

public class UserValidator : AbstractValidator<User>
{
    public UserValidator()
    {
        RuleFor(user => user.Name).NotEmpty();
        RuleFor(user => user.Email).EmailAddress();
    }
}

Program.cs

public class Program
{
    public static void Main(string[] args)
    {
        var user = new User { Name = "", Email = "invalid-email" };
        var validator = new UserValidator();
        var results = validator.Validate(user);
        if (!results.IsValid)
        {
            foreach (var failure in results.Errors)
            {
                Console.WriteLine($"Property {failure.PropertyName} failed validation. Error was: {failure.ErrorMessage}");
            }
        }
    }
}

这些工具能够帮助你编写更简洁、更易于维护的代码,并简化你的开发流程。

相关留言评论
昵称:
邮箱:
阅读排行