dotnetcore迁移方法初步


dotnet core出2.0了。把一些现有代码试着做了下迁移,出乎意料的顺利。


这里分享一些有用的nuget包,和有用的代码:

nuget包名引用原因其他
Microsoft.AspNetCore.HttpHttp处理HttpContext.Current方法需要替代方案
Microsoft.AspNetCore.Mvc.CoreHttp处理 
Microsoft.Extensions.Caching.MemoryMemoryCache需要补充Contains方法
Microsoft.Extensions.Configuration配置文件 
Newtonsoft.JsonJson 
StackExchange.RedisRedis 
System.Configuration.ConfigurationManagerAppSettings和ConnectionStringapp.config需要自己手动增加
System.Data.SqlClientSQLConnection注意从linux访问的时候,sqlserver需要2008sp4以上版本。
System.Net.HttpHttp处理 
Microsoft.PinYinConverter中文处理这个nuget包比较特别,是4.6.1的,但是dotnetcore声称可以直接引用。需要测试。
Magick.NET-Q8-AnyCPU图像处理Bitmap都要改用ImageMagick.MagickImage。
不能直接替换。坐标和字体需要注意。
   
   


再贴点有用的代码:

//代替HttpContext.Current
public partial class MyHttpContext
{
    public static IServiceProvider ServiceProvider;

    /// <summary>
    /// 注意多线程下这个方法可能不准确
    /// </summary>
    public static Microsoft.AspNetCore.Http.HttpContext Current
    {
        get
        {
            object factory = ServiceProvider.GetService(
                typeof(Microsoft.AspNetCore.Http.IHttpContextAccessor));
            Microsoft.AspNetCore.Http.HttpContext context = 
                ((Microsoft.AspNetCore.Http.HttpContextAccessor)factory).HttpContext;
            return context;
        }
    }

}

//为MemoryCache补上Contains方法
public static class DefaultExtentions
{
    public static bool Contains(this MemoryCache mc, string key)
    {
        if (mc.Get(key) == null)
        {
            return false;
        }
        else
        {
            return true;
        }
    }
}

//dotnetcore目前没有自带hex处理
public static byte[] HexStringToBytes(string hex)
{
    int NumberChars = hex.Length;
    byte[] bytes = new byte[NumberChars / 2];
    for (int i = 0; i < NumberChars; i += 2)
        bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);
    return bytes;
}

//
public static string BytesToHexString(byte[] ba)
{
    StringBuilder hex = new StringBuilder(ba.Length * 2);
    foreach (byte b in ba)
        hex.AppendFormat("{0:x2}", b);
    return hex.ToString();
}


### DotNet Core 开发指南 对于希望使用DotNetCore进行开发的新用户而言,确保开发环境支持.NET Core是首要条件[^2]。安装最新版本的.NET SDK(软件开发包),可以满足这一需求并提供必要的编译器、运行时以及库文件。 #### 创建新项目 通过命令行创建新的控制台应用程序非常简单: ```bash dotnet new console -o MyApplicationName cd MyApplicationName dotnet run ``` 这段脚本会初始化一个新的C#控制台应用,并立即执行该程序以验证设置是否成功完成。 #### 添加依赖项 当需要引入外部库来增强功能时,可以通过`dotnet add package Package.Name`的方式轻松添加NuGet包作为项目的依赖项。这使得获取第三方组件变得异常便捷。 #### 发布与部署 准备发布成品前,先清理旧版构建产物再重新打包是最优实践之一: ```bash dotnet clean dotnet publish -c Release -o ./publish_output_directory ``` 此过程不仅移除了不必要的调试信息还优化了最终制品供生产环境中部署之用。 ### 常见问题解决方案 - **无法解析某些命名空间** 如果遇到类似错误提示:“找不到类型或命名空间名”,通常是因为缺少相应的using指令或者是未能正确引用所需的程序集。检查源码顶部是否有遗漏的关键字声明;另外确认`.csproj`文件里已加入适当的目标框架和依赖关系定义。 - **跨平台兼容性挑战** 由于Windows、Linux及macOS操作系统间存在差异,在一处平台上正常工作的代码未必能在另一处顺利迁移。针对这种情况,建议利用多目标特性指定多个TFM(Target Framework Monikers),从而编写一次即可适用于多种场景下的逻辑。 - **性能调优技巧** 为了提升应用程序的表现力,可以从以下几个方面入手:减少GC压力、避免频繁分配内存对象;采用异步编程模型处理I/O密集型任务;借助配置文件调整JIT即时编译参数等措施均有助于改善整体效能表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值