WatchFile.Core 2.5.0

dotnet add package WatchFile.Core --version 2.5.0
                    
NuGet\Install-Package WatchFile.Core -Version 2.5.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="WatchFile.Core" Version="2.5.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="WatchFile.Core" Version="2.5.0" />
                    
Directory.Packages.props
<PackageReference Include="WatchFile.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add WatchFile.Core --version 2.5.0
                    
#r "nuget: WatchFile.Core, 2.5.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package WatchFile.Core@2.5.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=WatchFile.Core&version=2.5.0
                    
Install as a Cake Addin
#tool nuget:?package=WatchFile.Core&version=2.5.0
                    
Install as a Cake Tool

WatchFile.Core - 智能文件监控库

NuGet Downloads

专为工控环境设计的高性能文件监控库,支持 .NET Framework 4.6.1+ 和 .NET 6+。

🆕 v2.5.0 新功能

� 简化离线变化处理

  • 自动联动模式 - 新增 autoTriggerFileChangedEvents 配置,离线变化可自动转换为 FileChanged 事件
  • 统一事件处理 - 用户只需处理一个 FileChanged 事件,离线和实时变化统一处理
  • 配置灵活性 - 支持自动模式和手动模式,满足不同使用场景

⚡ 用户体验优化

  • 默认配置优化 - TriggerEventsForNewFiles 默认为 true,提升测试体验
  • 文档完善 - 添加详细的使用模式说明和最佳实践

✨ 核心特性

  • 智能监控 - 目录/文件变化实时监控,支持递归监控
  • 内容分析 - 精确的行级、字段级变化分析
  • 格式支持 - CSV、Excel文件解析,支持多种编码
  • 离线检测 - 重启后自动检测停机期间的文件变化
  • 工控优化 - 专为大量小文件监控场景设计
  • 配置驱动 - JSON配置,支持排除模式和自动删除

🚀 快速开始

// 1. 创建监控管理器
var manager = new WatchManager("watchfile-config.json");

// 2. 订阅事件
manager.FileChanged += (sender, e) => {
    Console.WriteLine($"文件变化: {e.FilePath}");
    Console.WriteLine($"变化类型: {e.ChangeType}");
    
    // 查看详细变化
    if (e.ChangeDetails != null && e.ChangeDetails.HasChanges) {
        Console.WriteLine($"新增行: {e.ChangeDetails.AddedRows.Count}");
        Console.WriteLine($"删除行: {e.ChangeDetails.DeletedRows.Count}");
        Console.WriteLine($"修改行: {e.ChangeDetails.ModifiedRows.Count}");
    }
};

// 3. 离线变化检测事件
manager.OfflineChangesDetected += (sender, e) => {
    var summary = e.GetSummary();
    Console.WriteLine($"离线检测: {summary}");
};

// 4. 启动监控
await manager.StartAsync();

⚙️ 配置示例

{
  "version": "1.0",
  "globalSettings": {
    "enableLogging": true,
    "logLevel": "Info",
    "offlineChangeDetection": {
      "enabled": true,
      "triggerEventsForNewFiles": true,
      "triggerEventsForDeletedFiles": true,
      "autoTriggerFileChangedEvents": true,
      "comparisonMethod": "TimestampAndSize"
    }
  },
  "watchItems": [{
    "id": "csv-monitor", 
    "name": "CSV文件监控",
    "enabled": true,
    "path": "C:\\Data",
    "type": "Directory",
    "fileFilters": ["*.csv"],
    "watchEvents": ["Created", "Modified"],
    "deleteAfterProcessing": false,
    "fileSettings": {
      "fileType": "CSV",
      "hasHeader": true,
      "delimiter": ",",
      "encoding": "UTF-8"
    }
  }]
}

📚 完整文档

🎯 适用场景

  • 工控设备日志文件监控
  • 数据文件变化实时分析
  • 批处理文件自动化处理
  • 文件内容差异追踪
  • 生产环境文件监控

📄 许可证

MIT License - 查看 LICENSE

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Framework net461 is compatible.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.5.0 49 9/7/2025
2.4.1 52 9/7/2025
2.4.0 54 9/7/2025
2.3.1 121 9/5/2025
2.3.0 122 9/2/2025
2.2.0 120 9/2/2025
2.1.1 119 9/2/2025
2.1.0 118 9/2/2025
2.0.0 116 9/2/2025

v2.5.0:
     - 🚀 重大改进:新增 AutoTriggerFileChangedEvents 配置选项
     - ✨ 自动模式:离线检测变化可自动转换为 FileChanged 事件,简化用户代码
     - 🎛️ 手动模式:保留原有 OfflineChangesDetected 事件处理方式
     - 🔧 配置优化:TriggerEventsForNewFiles 默认改为 true,提升测试体验
     - 📚 文档完善:添加详细的使用模式说明和配置参考
     
     v2.4.1:
     - 📝 文档更新:同步更新README.md和API.md到v2.4.0版本内容
     - 🔄 NuGet包描述更新:包含最新功能介绍和使用指南
     
     v2.4.0:
     - 🔍 离线变化检测:监控器重启时自动检测停机期间的文件变化
     - ⚡ 性能优化:移除ExtractedData冗余属性,减少内存占用
     - 🏷️ 类名优化:WatchFileManager → WatchManager,API更清晰
     - 🛠️ Bug修复:离线检测文件支持配置驱动的自动删除
     - ⚙️ 执行优化:先执行离线检测再初始化watchfile,确保准确性
     
     v2.3.0:
     - 🚀 新增配置驱动的自动删除功能:DeleteAfterProcessing
     - 🛡️ 智能文件清理:自动删除主文件和缓存文件
     - 🔧 强制删除机制:自动清除只读、隐藏、系统属性
     - 📁 缓存目录管理:自动清理空的缓存目录
     - ❌ 重要变更:移除2.2.0版本的手动删除API(SafeDeleteFileAsync等)
     - 🔄 架构优化:改为配置驱动的自动删除,更适合工控环境
     - 🧹 代码重构:清理未使用的方法,简化API设计
     - ⚙️ 使用方式:现在只需在配置中设置"DeleteAfterProcessing": true
     
     v2.2.0:
     - 🚀 新增安全删除功能:SafeDeleteFileAsync, SafeDeleteMonitoredFileAsync
     - 🛡️ 强制删除机制:自动清除只读、隐藏、系统属性,解决工控环境权限问题
     - 🔧 智能文件处理:临时禁用监控事件,避免删除操作触发自身监控
     - 📦 自动编码处理:内置 System.Text.Encoding.CodePages,无需手动注册
     - 🧪 完整测试支持:ConsoleTest 集成安全删除测试和配置控制
     - ⚡ 性能优化:简化文件释放检查,移除复杂的独占访问检测
     
     v2.1.1:
     - 重要修复:GetAllWatchItems现在返回所有配置项,包括路径不存在的项
     - 改进:将路径验证从配置加载阶段移至监控启动阶段
     - 增强:用户现在可以看到完整的配置列表,便于识别有问题的监控项
     - 优化:在启动监控时提供更友好的路径错误提示
     
     v2.1.0:
     - 新增静态配置校验方法:ValidateConfigurationFile, ValidateConfigurationObject
     - 新增LoadAndValidateConfiguration方法:一次调用完成配置校验和加载
     - 修复GetAllWatchItems在StartAsync之前调用返回空列表的问题
     - 改进配置管理器,支持在构造函数中加载配置
     - 增强API文档和使用示例
     
     v2.0.0:
     - 支持详细的文件内容变化分析
     - 优化工控环境大量小文件监控
     - 临时文件缓存机制
     - 支持 .NET Framework 4.6.1+ 和 .NET 6+
     - CSV/Excel 文件智能差异检测
     - 可配置的列映射和数据类型转换