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
这里写图片描述

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

教你一招:用命令行编译csproj项目文件

转自:爱符号  http://www.afuhao.com/article_articleId-55_ArticleGroupId-42.shtml       最近为了方便开发,有一个辅助...
  • symbolspace
  • symbolspace
  • 2013年07月03日 03:22
  • 4203

用VS2010将C程序做成动态链接库dll

/* 一直在做linux编程,突然要移植到windows,摸索了好久,记录下,分三篇来记录: 1.用vs2010将C做成dll 2.c#做界面后,如何调用C语言函数/dll 3.c#程序的打包...
  • leo9150285
  • leo9150285
  • 2013年04月16日 13:41
  • 5451

Eclipse 项目无法自动编译,WEB-INF/classes目录下没有class文件的解决过程

今天发布某个Web项目新版本,需要替换服务器上的几个class文件。在项目树中找到WEB-INF/classes目录,竟然发现没有任何class文件!...
  • yzhuahq
  • yzhuahq
  • 2016年04月21日 11:46
  • 13519

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

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

使用CSC命令来生成项目

本篇博客来演示如何通过CSC命令来生成程序集和应用程序,而不使用VisualStudio。 接下来,让我们来一步一步创建一个程序集和控制台应用程序,并通过csc命令来编译他们。...
  • daguanjia11
  • daguanjia11
  • 2016年08月07日 23:52
  • 761

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

build.xml ...
  • sxyx2008
  • sxyx2008
  • 2012年09月05日 10:50
  • 916

C# 自动 定时 程序 (windows服务的形式)

  • 2014年01月09日 09:11
  • 1.36MB
  • 下载

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

之前一篇文章写 Web Service服务代理类生成及编译 , 通过命令行的方式可以直接把SOAP的Webservice服务生成代理类,再编译成一个dll 需求       既然上面可以生成了代理...
  • dxl0321
  • dxl0321
  • 2013年10月18日 11:56
  • 560

【初识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
  • 1106

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

在C和C++中常有用到宏定义#define,在C#中也这个关键字,不过功能不同了,C#中是作为条件编译的条件。 #define XXX 是定义XXX为条件编译的条件,相当于将XXX设为true。 #u...
  • xxdddail
  • xxdddail
  • 2013年12月09日 15:01
  • 2375
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CSC动态编译,监测文件夹下改变(Windows服务形式),自动编译生成dll供web项目使用
举报原因:
原因补充:

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