[C#] 项目设置
为了方便及有效的管理各种文件,包括项目文件、源码、资源、目标生成文件和临时生成文件,需要对各种文件分类存放,并且对项目进行必要的设置,以便与目录结构相对应。
1 目录结构
预期目标是实现项目文件、源码、资源、目标生成文件和临时生成文件分开存放,将项目文件放在一个文件夹中,源码和资源放在另一个文件夹中,目标生成文件和临时生成文件放在再另一个文件夹中。但是限于VS的限制,无法实现,那么退而求其次,将项目文件、源码和资源放在一个文件夹中,目标生成文件和临时生成文件放在另一个文件夹中。
预期目标 目录结构:
实际 目录结构:
2 项目设置
2.1 设置bin目录
右击项目,选择“属性”,选择“生成”选项卡,在输出路径中,填写以下内容:
Debug: ..\target\bin\Debug
Release: ..\target\bin\Release
2.2 设置obj目录
由于visual studio不能直接设置obj的路径,就只能直接修改项目文件了。
首先打开项目文件,即XXXX.csproj,在<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">和<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">下添加:
<BaseIntermediateOutputPath>..\obj\</BaseIntermediateOutputPath>和
<UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable>
如果把第2个选项去掉,并且把项目所在目录的obj目录删掉的话,rebuild项目时就会报错。
每次重新打开或rebuild项目的时候,ide都会重新创建obj目录,这个实在是太烦了,所以在postbuild下添加:
rmdir /s/q $(ProjectDir)obj
删除文件夹以及文件夹内所有内容(/s是删除所有子目录以及其中的内容;/q是在删除时,不提示yes or no)
2.3 设置生成事件
通常我们在编译一个工程或是链接库的时候,需要在编译链接之前或者编译链接之后执行一些操作,比如:拷贝一些第三方库到工程的工作目录下或执行一些批处理(shell)操作,这个时候就需要在编译器环境中进行相关设置:
说明: 在vs2005以及以上都支持了Build Events, 同时可以支持多行命令.
而在vs2003中要想执行多行命令,只能把命令写在一个批处理文件中,然后通过调用批处理来执行.
-
打开Build Events方框步骤:
1.右键单击项目,选择“属性”
2.选择“生成事件”,可以看到Pre-build (生成前事件命令)和Post-build(生成后事件命令),以及运行Post-build event 的条件 -
可以在相应的编译事件中添加以下常用操作:
1.build完后修改build产物的名字(后缀),并覆盖已有的同名文件.
copy /y $(TargetFileName) $(TargetName).XXX
2.调用外部命令或批处理:
call "C:\Program Files\XXX.exe"
3.条件判断:
IF NOT $(ConfigurationName) == Release GOTO end call "C:\Program Files\XXX.exe" $(ProjectDir)$(TargetName).cvp :end
4.web project 自动部署
copy $(TargetDir)*.* //MyServer/MyService/bin copy $(ProjectDir)*.ascx //MyServer/MyService
5.拷贝文件到制定目录
copy "$(ProjectDir)pri.bin" "$(SolutionDir)$(SolutionName)\$(OutDir)"
原文地址:https://www.cnblogs.com/wxxujian/p/12772711.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- mysqldump命令详解 Part 9 --hex-blob 参数的使用
- 使用XtraBackup备份MySQL 8.0 Part 2 XtraBackup权限及配置
- 使用XtraBackup备份MySQL 8.0 Part 6 对数据库进行增量备份
- ArrayList源码阅读笔记
- 3分钟短文 | Laravel表单验证没规则可用?你试试自定义,真香!
- 【C#】DataGridView 数据绑定的一些细节
- 3分钟短文 | Laravel 查询结果检查是不是空,5个方法你别用错!
- 使用XtraBackup备份MySQL 8.0 Part 7 对增量备份进行恢复
- 3分钟短文 | Laravel 日志全程记录 SQL 查询语句,要改写底层?
- MySQL InnoDB表空间加密
- 微信小程序自动化测试最佳实践(附 Python 源码)
- 3分钟短文 | MySQL在分组时,把多列合并为一个字段!
- Redis Linux系统参数最佳配置
- 实现Promise其它API
- 使用sysbench进行压测 Part1 sysbench安装