标签 .NET 下的文章

最近在不经意之间写了一个涉及EFCore事务性的bug。起因是某一个业务方法SubmitFlowAsync()中要复用一段流程引擎的接口,而这个业务类中除了这个业务方法之外的其它所有方法都和流程引擎无关,所以我下意识地从之前流程引擎的单元测试中拷贝了一段程序并稍加修改,变成了下面的代码:


// 通过依赖注入得到的字段  
private readonly IServiceScopeFactory _ssf;
  
// ...

// 一个业务方法
public async Task<FSharpResult<IEnumerable<FlowInvocationRecord>, IDomainErr>> SubmitFlowAsync(string definitionCode, string instanceCode)
{
    using var scope = this._ssf.CreateScope();
    var sp = scope.ServiceProvider;
    IFlowDefinitionRepo defRepo = sp.GetRequiredService<IFlowDefinitionRepo>(); // 流程引擎特有接口
    IFlowInstanceRepo instRepo = sp.GetRequiredService<IFlowInstanceRepo>();    // 流程引擎特有接口

    var q = from definition in this.LoadDefinitionAsync(definitionCode)
            from instance in this.CreateFlowInstance(instRepo, definition, Guid.NewGuid().ToString(), instanceCode)
            from records in this._flowInvoker.BeginAsync(sp, instRepo, definition, instance)
                .SelectError(e => {
                    IDomainErr err = new DummyErr("400", e.ToString() ?? this._localizer["流程启动错误"]);
                    return err;
                })
            select records;
    return await q;
}

调用代码类似于:

阅读剩余部分

  1. .NET Core 离线开发与编译-初步
  2. .NET Core 离线开发与编译-进阶
  3. .NET Core 离线开发与编译-VS离线安装

offline.jpg

如果不需要使用WPF/WinForm,使用VSCode+ .NET SDK足以应付90%的开发场景。但是当项目需要调用 SOAP WebService,编译相关代码时,仍然需要VS提供的msbuild功能。所以安装VS还是有必要的。

自VS2015起, VS提供免费的社区版供开源软件、小微企业免费使用,但是前提是要登录微软账号、且需要每隔90天就联网一次。逾期未能联网,就会被禁止使用。要想完全断网使用,必须使用专业版或者企业版。

VS的离线安装

根据官方文档,我们可以下载Visual Studio bootstrapper,并使用它创建一个本地缓存。

阅读剩余部分

这是.NET Core离线开发与编译系列的第二篇。本系列目录如下:

  1. .NET Core 离线开发与编译-初步
  2. .NET Core 离线开发与编译-进阶
  3. .NET Core 离线开发与编译-VS离线安装

offline.jpg

Paket安装

dotnet tool管理

最简单的方式是通过dotnet tool来安装:

安装成全局工具

dotnet tool install --global Paket

这样就可以使用paket命令了。不过,我并不喜欢这个方式。原因很简单,强迫所有代码仓库都使用同一个版本的Paket进行管理不够灵活。

好在我们可以把Paket安装成局部工具:

阅读剩余部分