C# VS生成后事件命令行

 引言部分,总领全篇文章的中心内容。

01

前言

Visual Studio中,可以在项目-》属性-》生成事件-》生成后事件命令行(O):

中设置项目生成后执行的脚本,从而实现项目文件生产后的自动部署。如下图所示:

04844f0646ed303cb8b79970afa5e20d.png

02


自动部署

      在大型的项目开发中,往往个人只承担一部分内容的开发,我们可能生成的只是一堆动态链接库(DLL),这些类库文件无法单独启动调试,而只有嵌入到公司项目的部署路径中才可以运行,这样需要我们每次生成后都得手动copy生成文件到公司项目的部署路径,这样调试起来就不太方便,这时候如果我们借助生成后事件命令行就可以省略上述步骤实现生产时自动部署。

   如我的项目生产目录在:

   D:\搜狗高速下载\mycode\Caliburn测试\bin\Debug

5889238262b8436d53cae8c7626c1ce3.png

我希望将所有生产的文件包括子文件都在生成时自动移动到路径:

D:\Chat\TEST下

我们只需要添加如下脚本:

xcopy $(ProjectDir)$(OutDir)*.* D:\Chat\TEST\ /y/e

这样每次我们的项目点击了生产菜单后,生产的项目就被自动拷贝到了目标路径下,省去了不必要的手动操作。

03


脚本解释

  • (ProjectDir)$(OutDir)*.* 表示项目输出路径下生成的所有文件,不加*.*也一样;

  • D:\Chat\TEST\   这个是我要部署的路径,此路径不存在,也会自动创建;

  • xcopy  复制文件;

  • /y/e    如果只复制文件用/y,如果同时需要复制生产目录下子文件夹的信息则再加上/e

除此之外还有如下常用的指令:

指令                                                      说明$(ConfigurationName)            当前项目配置的名称(例如,“Debug|Any CPU”)。$(OutDir)                              输出文件目录的路径,相对于项目目录。这解析为“输出目录”属性的值。它包括尾部的反斜杠“\”。$(DevEnvDir)                         Visual Studio  的安装目录(定义为驱动器 + 路径);包括尾部的反斜杠“\”。$(PlatformName)                   当前目标平台的名称。例如“AnyCPU”。$(ProjectDir)                          项目的目录(定义为驱动器 + 路径);包括尾部的反斜杠“\”。$(ProjectPath)                        项目的绝对路径名(定义为驱动器 + 路径 + 基本名称 + 文件扩展名)。$(ProjectName)                      项目的基本名称。$(ProjectFileName)                 项目的文件名(定义为基本名称 + 文件扩展名)。$(ProjectExt)                          项目的文件扩展名。它在文件扩展名的前面包括“.”。$(SolutionDir)                         解决方案的目录(定义为驱动器 + 路径);包括尾部的反斜杠“\”。$(SolutionPath)                       解决方案的绝对路径名(定义为驱动器 + 路径 + 基本名称 + 文件扩展名)。$(SolutionName)                     解决方案的基本名称。$(SolutionFileName)                解决方案的文件名(定义为基本名称 + 文件扩展名)。$(SolutionExt)                         解决方案的文件扩展名。它在文件扩展名的前面包括“.”。$(TargetDir)                           生成的主输出文件的目录(定义为驱动器 + 路径)。它包括尾部的反斜杠“\”。$(TargetPath)                         生成的主输出文件的绝对路径名(定义为驱动器 + 路径 + 基本名称 + 文件扩展名)。$(TargetName)                       生成的主输出文件的基本名称。$(TargetFileName)                  生成的主输出文件的文件名(定义为基本名称 + 文件扩展名)。$(TargetExt)                          生成的主输出文件的文件扩展名。它在文件扩展名的前面包括

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

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

相关文章

mysql binlog 大数据_后起之秀 | MySQL Binlog增量同步工具go-mysql-transfer实现详解

一、 概述工作需要研究了下阿里开源的MySQL Binlog增量订阅消费组件canal,其功能强大、运行稳定,但是有些方面不是太符合需求,主要有如下三点:需要自己编写客户端来消费canal解析到的数据server-client模式,需要同时部…

如何备份服务器日志到其他服务器_KIWI Syslog日志服务器搭建及配置

认地,kiwi使用UDP 514端口接收日志数据,安装成功后即可接收日志使用命令netstat –ano查看服务器监听状态,如果服务没起来,则重新启动服务Kiwi Syslog Daemon任务:把当天的日志保存在G:event,历史日志保存在…

oncontextmenu事件

用oncontextmenu事件单禁用右键菜单 onconTextmenuwindow.event.returnValuefalse;右键菜单禁用&#xff0c;用这个可以禁止复制。 在<body>中加入属性代码&#xff1a; οncοntextmenu"return false" onselectstart"return false" …

【C++ Primer学习笔记】第2章:变量和基本类型

类型是所有程序的基础。类型告诉我们数据代表什么意思以及可以对数据执行哪些操作。 C中对类型的支持是非常广泛的&#xff1a;语言自身定义了一组基础类型和修改已有类型的方法&#xff0c;还提供了一组特征用于自定义类型。 2.1基本内置类型 wchar_t类型用于扩展字符&#xf…

Android 系统文件夹功能(转)

打开Android文件管理器&#xff0c;里面数十个英文名称命名的文件夹罗列其中&#xff0c;很多功能我们可以从其名字上略有所知&#xff0c;内部大批量的文件却让我们有些一头雾水。这些文件是什么?有什么用?我们能不能删?这些都是我们脑中充满疑问的。今日笔者就将Android手…

Dapr牵手.NET学习笔记:状态管理进阶(二)

为了防止并发对数据修改造成差异&#xff0c;dapr使用了etag标签来作为版本号&#xff0c;对数据修改进行验证。下面是对etag的一个demoappsettings.json中的url配置"StateUrl": "http://localhost:3500/v1.0/state/statestore"在PaymentSystem项目中添加两…

这三位同学的名字绝了!笑得肚子疼......

1 这三位同学的名字绝了&#xff01;▼2 我是一只小海豹我在假装跷跷板▼3 单身狗受到暴击▼4 小宝宝真可怜打针打出了条件反射▼5 每生成一个验证码都有一位程序员......▼6 虽然腿短但是人家跑得快啊▼7 内容引起极度舒适▼你点的每个赞&#xff0c;我都认真当成了喜欢…

python统计出现的中文标点_Python处理中文标点符号大集合

中文文本中可能出现的标点符号来源比较复杂&#xff0c;通过匹配等手段对他们处理的时候需要格外小心&#xff0c;防止遗漏。以下为在下处理中文标点的时候采用的两种方法:中文标点集合比较常见标点有这些&#xff1a;&#xff01;&#xff1f;&#xff61;&#xff02;&#x…

从Hadoop框架与MapReduce模式中谈海量数据处理(含淘宝技术架构)

从hadoop框架与MapReduce模式中谈海量数据处理前言几周前&#xff0c;当我最初听到&#xff0c;以致后来初次接触Hadoop与MapReduce这两个东西&#xff0c;我便稍显兴奋&#xff0c;认为它们非常是神奇&#xff0c;而神奇的东西常能勾起我的兴趣&#xff0c;在看过介绍它们的文…

WPF过渡面板

WPF开发者QQ群&#xff1a; 340500857 | 微信群 -> 进入公众号主页 加入组织欢迎转发、分享、点赞、在看&#xff0c;谢谢~。 前言效果投稿来源于-郑竣僖 QQ&#xff1a;41130958301—效果预览效果预览&#xff08;更多效果请下载源码体验&#xff09;&#xff1a;一、Tra…

UScript中的Pow函数

这些天越来越发现数学的重要和妙趣了&#xff0c; 由于一些地方需要使用指数次幂来实现更好的效果&#xff0c; 想当然地去找pow函数&#xff0c;把Object和Actor翻了个底朝天 。。。 结果可想而知&#xff0c; 也正好&#xff0c;尝试了一把UScript和C的混编&#xff0c;但搜一…

PM与工程师

原文链接&#xff1a;http://firecacada.blog.163.com/blog/static/70743762011117114451722/ 过节前看到一篇文章&#xff0c;讲产品项目就应该由工程师来主导&#xff0c;但国内让PM去驱动项目&#xff0c;搞得乱七八糟&#xff0c;很恼火&#xff0c;怎么可能做出一款好产品…

哪些才是对女朋友的有效关心,来学习一下~

1 这本书真好&#xff0c;在哪里才能买得到呢&#xff1f;2 求求你&#xff0c;不要抢我的小毛虫&#xff01;3 所有的乘客请系好安全带4 小朋友非常可爱了5 字幕组真的尽力了&#xff01;6 学习了7 10月16日&#xff0c;平安南京 根据真实接警经历&#xff0c;发布一则警示案例…

fabric 转账_Fabric 学习笔记-架构初探

本文介绍了Fabric的架构&#xff0c;以及通过一个简单的Demo来熟悉整个交易流程。Hyperledger fabric V1.0的架构如下图所示&#xff1a;application提供各种语言的SDK接口。membership也就是fabric-ca提供成员服务&#xff0c;用来管理身份&#xff0c;提供授权和认证。peer负…

多个goruntine 性能变慢_提高 JavaScript 性能的 12 个技巧

作者丨Liz Parody在创建 Web 应用程序时应始终考虑性能。为了帮助你开始&#xff0c;本文列举了有效提高应用程序性能的 12 种方法。性能是创建网页或应用程序时最重要的一个方面。没有人想要应用程序崩溃或者网页无法加载&#xff0c;或者用户的等待时间很长。根据 Kissmetric…

#celery#周期性任务

2019独角兽企业重金招聘Python工程师标准>>> 玩了一个星期的clannad&#xff0c;是时候干点事了。 折腾了下celery周期性任务&#xff1a; celery提供了一个叫celery beat的服务&#xff0c;用于定时驱使worker执行任务。也就是说&#xff0c;如果本地没有活动的wor…

WTMPlus 1.1 发布

点击上方蓝字关注我们1.1版本WTMPlus上线一个多月以来&#xff0c;得到了越来越多用户的喜爱。虽然1.0版本还有不少问题&#xff0c;但是它的核心理念和功能受到了用户的认可。1.1版本修复了大量用户反馈的易用性的问题和系统Bug&#xff0c;并且加入了强悍的图表工具。图表编辑…

backgroundworder 简单使用

//手动创建backgroundworker组件///创建 private backgroundworker bgd new backgroundworker(); ///声明xmldoment private xmldoment doment null; /// Load 加载事件 private void Form1_Load(object sender , EventArgs e) { /// 执行操作 this.bgd.DoWorker delegate(ob…

4部“教材级”纪录片,有生之年必看系列!

全世界只有3.14 % 的人关注了爆炸吧知识纪录片是以真实生活为创作素材&#xff0c;以真人真事为表现对象&#xff0c;并对其进行艺术的加工与展现的&#xff0c;以展现真实为本质&#xff0c;并用真实引发人们思考的电影或电视艺术形式。好的纪录片就像打开了一扇新世界的大门&…

mysql数据恢复时显示多线程恢复_MySQL多线程备份恢复工具mydumper,myloder

mydumper备份时&#xff0c;数据和表结构是分开的&#xff0c;比如备份test表时&#xff0c;会生成test.sql文件和test.schema.sql文件。myloader导数据的时候默认不会记录二进制日志&#xff0c;即使你的sql_log_binon.准备安装介质&#xff1a;下载mydumper-0.6.2.tar.gz下载…