CSC动态编译,监测文件夹下改变(Windows服务形式),自动编译生成dll供web项目使用

原创 2016年06月01日 20:32:02

1 监测文件夹 下面所有改变

using System;
using System.IO;
using System.Security.Permissions;
using System.Threading;

namespace 自定义
{
public class FileWatcher
{

    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
    public static void IsChanged()
    {

        FileSystemWatcher watcher = new FileSystemWatcher(@"C:\Users\Lucifer\Desktop\BizView\BizView.Model");
        watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite| NotifyFilters.FileName | NotifyFilters.DirectoryName;
        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnChanged);
        watcher.Deleted += new FileSystemEventHandler(OnChanged);
        watcher.Renamed += new RenamedEventHandler(OnRenamed);
        watcher.EnableRaisingEvents = true;
    }
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        Thread.Sleep(20000);
        Compiler.BeginCompiler();
    }

    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        Thread.Sleep(20000);
        Compiler.BeginCompiler();
    }
}

}

2 调用.net Framework 编译器CSC,CSC基本思想应该就是安德森.海尔斯伯格的,他一开始就是开发编译器的 代码如下
using System;
using System.Reflection;
using System.Globalization;
using Microsoft.CSharp;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Text;
using System.IO;
using System.Diagnostics;

namespace 自定义
{
public class Compiler
{

    #region
    /// <summary>
    /// 动态生成dll
    /// </summary>
    #endregion
    public static void BeginCompiler()
    {

        string sss = @"/t:library /r:System.dll;System.Threading.Tasks.dll;System.Linq.dll;System.ComponentModel.dll;System.ComponentModel.DataAnnotations.dll;   /out:C:\Users\**自定义路径**\自定义生成文件名(包含文件类型) C:\Users\要编译的文件夹路径\*.cs";//编译目录下所有.cs文件
        //默认.net framework 4.0 csc路径
        string FileName = "C:/Windows/Microsoft.NET/Framework64/v4.0.30319/csc.exe";
        Process process = new Process();
        process.StartInfo.FileName = FileName;
        process.StartInfo.Arguments = sss;
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.RedirectStandardInput = true;
        process.StartInfo.RedirectStandardOutput = true;
        process.StartInfo.RedirectStandardError = true;
        process.StartInfo.ErrorDialog = false;
        process.StartInfo.CreateNoWindow = false;
        process.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
        process.Start();
    }


}

}
3 文件监测作为Windows服务
Onstart()方法加入这句代码
FileWatcher.IsChanged();
服务已启动:
服务已启动:
改变目标文件夹下文件
改变目标文件夹下文件
生成Dll
这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

WEB服务(九)网页形式监测apache服务器运行状态(转)

apache服务中加载mod_status.c模块可把web服务的一些信息统计出来,并制作成网页。只要网络管理员浏览设置好的网页网址就可以访问并了解到网站的相关信息。 这些相关的信息包括:服务器的版本...

使用Ant构建web项目 从编译到测试 生成测试报告 打包 邮件发送 远程下载tomcat 部署运行一条龙服务之ant脚本

build.xml ...

使用CSC命令来生成项目

本篇博客来演示如何通过CSC命令来生成程序集和应用程序,而不使用VisualStudio。 接下来,让我们来一步一步创建一个程序集和控制台应用程序,并通过csc命令来编译他们。

Web Service代理类自动生成及编译dll工具

之前一篇文章写 Web Service服务代理类生成及编译 , 通过命令行的方式可以直接把SOAP的Webservice服务生成代理类,再编译成一个dll 需求       既然上面可以生成了代理...

C# 自动运行代码 (创建windows 服务的形式 )

1.      新建项目 1.1 右键解决方案 – 添加 – 新建项目

用于将.cs文件 编译成dll文件(补充),如何配置在cmd中使用csc命令

CSC 命令详解   2011-01-11 16:14:22|  分类:C#|  标签:csc命令详解  |字号大中小 订阅 C#环境变量设置步骤(这样之后打开CMD就可以直接输入CS...

【初识C#】怎样使用C#命令行编译器csc.exe编译Hello World 程序

怎样使用C#命令行编译器csc.exe编译Hello World 程序 csc.exe是microsoft .NET framework下的c#编译器: 1.配置C#命令行编译器: 我的电脑 —...
  • CB_CB
  • CB_CB
  • 2012-08-08 19:31
  • 1023

windows环境下动态库的生成和使用 (.dll文件) .

前面说了windows环境下静态库的生成和使用方法,现在来看一看windows环境下动态库的生成和使用方法。这次的代码来自《windows核心编程 第5版》中第19章“DLL基础”。        ...

VS中使用define和undef实现条件编译(csc.exe条件编译)

在C和C++中常有用到宏定义#define,在C#中也这个关键字,不过功能不同了,C#中是作为条件编译的条件。 #define XXX 是定义XXX为条件编译的条件,相当于将XXX设为true。 #u...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)