Xwen的叹息

挣扎于设计和需求之间
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
    飞信目录下的那个虚拟机,是可以运行别的.net程序,这篇文章有详细的介绍 http://www.cnblogs.com/scottckt/archive/2007/12/14/995258.html
    这篇文章给出了包装一个.net程序的例子(我觉得示例本身有些问题,自己把自己绕进去了,但是还是可以参考)http://blog.csdn.net/wlwqw/archive/2007/09/17/1788113.aspx
    简单来说,飞信VMDotNet目录下的,FetionVM.exe 传入一个.net程序路径作为参数,将启动一个独立的虚拟机运行程序
    我简单测试了一下,只要是.net程序饮用的dll文件FetionVM.exe所在目录的System目录下存在,.net程序就可以通过FetionVM.exe运行,没有版本之分
   
网上有许多.net 2.0程序的测试例子,我个人用了.net 3.5进行了测试,代码如下
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace FetionVM_3._5
    {
        class Program
        {
        static void Main(string[] args)
        {
            int[] a = { 1, 3, 5, 6, 7, 8, 9, 15 };
            var v = from b in a where (b % 2 == 0) select b;
            foreach (var vv in v)
            {
                Console.WriteLine(vv);
            }

            Console.ReadLine();
        }
    }
}

代码生成的FetionVM-3.5.exe 放在D:\下
直接使用FetionVM.exe运行,在起目录的VMDotNet.txt文件中会记录如下错误
[2008/4/6 0:18:10] 运行程序 d:\FetionVM-3.5.exe 出现错误!

之后将,System.Xml.Linq.dll   System.Core.dll System.Data.DataSetExtensions.dll复制到System目录下,程序正常运行

理论上通过这个办法应该是可以运行所有.net程序的,明天试试看能不能正常运行WCF宿主程序