飞信虚拟机

做完了一个图片处理软件,突然想到上次上网看到C#程序脱离.NET FRAMEWORK运行的文章,于是决定自己动手试一下。

  之前看到有用别的方法来实现的,但我还是选择了现在比较流行的软件飞信中带的VMDotNet,也就是所谓的.NET FRAMEWORK虚拟机吧。相信有很多人也已经看过相关文章了,但是对于新手我还是再提一下,在你的飞信的安装目录下有一个VMDotNet文件夹,这个就是我们要用的最主要的内容了,先把它COPY出来吧!

  下面先来简单说明一下VMDotNet文件夹吧,在这个文件夹之下有一个v2.0.50727文件夹,很明显是.NET FRAMEWORK的版本号啦,进入这个文件夹,里面有一个FetionVM.exe的可执行文件(飞信的图标),这个便是我们要用到的虚拟机文件了。其它文件我们不用考虑。这个程序可以带入一个参数,即要在此虚拟环境下运行的程序的路径。形如FetionVM.exe C:/1.exe,也可以使用相对路径:FetionVM.exe 1.exe,当然这样要求两者在同一目录下啦。这里顺便要再说一下VMDotNet.log这个文件,这里记录了在调用FetionVM.exe时的错误信息,主要是路径不对,找不到对应的程序。在了解了这个文件夹之后,我们可以动手开始做啦!

  把这个文件夹复制到你的项目的DEBUG目录下,我的已有项目名为PicProcessor,生成的可执行文件为,当然你也可以视情况而定了,如果放别的地方就应该注意一下路径就好了。

  在这里我们需要再新建一个C#应用程序项目,我把它命名为PicStart,把FORM1.CS删除,或者直接新建一个控制台程序,在Program.cs中写入以下代码:

 


    using System;
  using System.Collections.Generic;
  using System.Windows.Forms;
  namespace PicStart
  {
  static class Program
  {
  ///
  
  ///应用程序的主入口点。
  ///
  
  [STAThread]
  static
  voidMain()
  {
  //下面是调用外部程序的代码
  System.Diagnostics.ProcessStartInfo Info = new
  System.Diagnostics.ProcessStartInfo();
  Info.FileName = "VMDotNet//v2.0.50727//FetionVM.exe"; //这里是你要调用到的外部程序
  Info.Arguments = "PicProcessor.exe"; //调用外部程序的参数,这里是图片处理项目的可执行文件,注意不是现在这个项目的可执行文件
  System.Diagnostics.Process Proc;
  try
  {
  //
  //启动外部程序
  //
  Proc = System.Diagnostics.Process.Start(Info);
  }
  catch (System.ComponentModel.Win32Exception e)
  {
  Console.WriteLine("系统找不到指定的程序文件。/r{0}", e);
  return;
  }
  }
  }
  }

  在做完了这个项目以后我们生成此项目,这个时候我们就可以开始制作程序的安装文件了。

  以前我们利用VS2005做安装包的时候可以选择把.NET FRAMEWORK集成进去,但现在我们不用了,请大家把相应的选项全部去掉

  我们把PicProcessor和PicStart项目都添加进新建的安装和部署项目Setup中来,把程序启动的快捷方式全部设为PicStart.exe就可以了,具体的操作方法在上面的链接里有。然后开始生成安装包,生成的安装包如果选择大小优先的话,VMDotNet会占用大概10Mb左右的空间,然后加上你程序的大小就是这个安装文件的大小了,比以前20多MB的.Net Framework小多了,而且安装速度也要快的多,这样程序在没有.Net Framework的机器上也能运行了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/388890.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

django的contenttype表

https://blog.csdn.net/aaronthon/article/details/81714496 这篇文章已经非常详细了,供自己以后忘了...回看...... 总结: 当一张表和多个表FK关联,并且多个FK中只能选择其中一个或其中n个时,可以利用contenttype,固定用三个字段…

视频播放问题和提高性能方案

1.Five symptoms of poor video performance 1.1 视频加载缓慢 ​Perceived Wait Time Time to first frame (TTFF): ​ 播放开始所需的adaptive bitrate(ABR)流媒体段的数量。(我们稍后将对此进行更详细的讨论。) ​ 视频请求发送到视频加载之间的时间(即接收到足够的数据…

rabbitmq 不同的消费者消费同一个队列_RabbitMQ 消费端限流、TTL、死信队列

消费端限流1. 为什么要对消费端限流假设一个场景,首先,我们 Rabbitmq 服务器积压了有上万条未处理的消息,我们随便打开一个消费者客户端,会出现这样情况: 巨量的消息瞬间全部推送过来,但是我们单个客户端无法同时处理这…

动量策略 python_在Python中使用动量通道进行交易

动量策略 pythonMost traders use Bollinger Bands. However, price is not normally distributed. That’s why only 42% of prices will close within one standard deviation. Please go ahead and read this article. However, I have some good news.大多数交易者使用布林…

css3 变换、过渡效果、动画

1 CSS3 选择器 1.1 基本选择器 1.2 层级 空格 > .itemli ~ .item~p 1.3 属性选择器 [attr] [attrvalue] [attr^value] [attr$value] [attr*value] [][][] 1.4 伪类选择器 :link :visited :hover :active :focus :first-child .list li:first-child :last-chi…

webservice 启用代理服务器

您会发现你写完了一个webservice在调用的时候发现怎也没办法调用,一个简单的webservice怎么不能使用,一肚子的怨恨,哈哈您可能没有为webservice设置代理。 下面就给您写个调用的用例和大家分享下。其实很简单,但是你没有想到的时…

mysql常用的存储引擎_Mysql存储引擎

什么是存储引擎?关系数据库表是用于存储和组织信息的数据结构,可以将表理解为由行和列组成的表格,类似于Excel的电子表格的形式。有的表简单,有的表复杂,有的表根本不用来存储任何长期的数据,有的表读取时非…

android studio设计模式和文本模式切换

转载于:https://www.cnblogs.com/judes/p/9437104.html

高斯模糊为什么叫高斯滤波_为什么高斯是所有发行之王?

高斯模糊为什么叫高斯滤波高斯分布及其主要特征: (Gaussian Distribution and its key characteristics:) Gaussian distribution is a continuous probability distribution with symmetrical sides around its center. 高斯分布是连续概率分布,其中心周…

C# webbrowser 代理

百度,google加自己理解后,将所得方法总结一下: 方法1:修改注册表Software//Microsoft//Windows//CurrentVersion//Internet Settings下 ProxyEnable和ProxyServer。这种方法适用于局域网用户,拨号用户无效。 1p…

C MySQL读写分离连接串_Mysql读写分离

一 什么是读写分离MySQL Proxy最强大的一项功能是实现“读写分离(Read/Write Splitting)”。基本的原理是让主数据库处理事务性查询,而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库。当然,主服务器也可以提供…

golang 编写的在线redis 内存分析工具 rma4go

redis 内存分析工具 rma4go redis是一个很有名的内存型数据库,这里不做详细介绍。而rma4go (redis memory analyzer for golang) 是一个redis的内存分析工具,这个工具的主要作用是针对运行时期的redis进行内存的分析,统计redis中key的分布情…

从Jupyter Notebook到脚本

16 Aug: My second article: From Scripts To Prediction API8月16日:我的第二篇文章: 从脚本到预测API As advanced beginners, we know quite a lot: EDA, ML concepts, model architectures etc…… We can write a big Jupyter Notebook, click “Re…

【EasyNetQ】- 使用Future Publish调度事件

许多业务流程要求在将来某个日期安排事件。例如,在与客户进行初次销售联系后,我们可能希望在将来的某个时间安排跟进电话。EasyNetQ可以通过其Future Publish功能帮助您实现此功能。例如,这里我们使用FuturePublish扩展方法来安排未来一个月的…

Java这些多线程基础知识你会吗?

0、并发和并行、进程核线程、多进程和多线程的区别: (这里的时间和时刻上的概念同物理上的一样) 并发:在一段时间内多个任务同时执行,或者说是在一段很短的时间内可以执行多条程序指令,微观上看起来好像是可…

MySQL set names 命令_mysql set names 命令和 mysql 字符编码问题

先看下面的执行结果:(rootlocalhost)[(none)]mysql>show variables like character%;---------------------------------------------------------------------------------------| Variable_name | Value |---------------------------------------------------…

设置Proxy Server和SQL Server实现数据库安全

首先,我们需要了解一下SQL Server在WinSock上定义协议的步骤: 1. 在”启动”菜单上,指向”程序/Microsoft Proxy Server”,然后点击”Microsoft Management Console”。 2. 展开”Internet Information Service”,再展开运行Proxy…

Python django解决跨域请求的问题

解决方案 1.安装django-cors-headers pip3 install django-cors-headers 2.配置settings.py文件 INSTALLED_APPS [...corsheaders,...] MIDDLEWARE_CLASSES (...corsheaders.middleware.CorsMiddleware,django.middleware.common.CommonMiddleware, # 注意顺序...…

加勒比海兔_加勒比海海洋物种趋势

加勒比海兔Ok, here’s a million dollar question: is the Caribbean really dying? Or, more specifically, are marine species found on Caribbean reefs becoming less abundant?好吧,这是一个百万美元的问题:加勒比海真的死了吗? 或者…

mysql 查出相差年数_MySQL计算两个日期相差的天数、月数、年数

MySQL自带的日期函数TIMESTAMPDIFF计算两个日期相差的秒数、分钟数、小时数、天数、周数、季度数、月数、年数,当前日期增加或者减少一天、一周等等。SELECT TIMESTAMPDIFF(类型,开始时间,结束时间)相差的秒数:SELECT TIMESTAMPDIFF(SECOND,1993-03-23 0…