[C#] 项目设置

时间:2020-04-25
本文章向大家介绍[C#] 项目设置,主要包括[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)"

  2.2 最后所说的删除obj文件夹命令,就添加在此处。


原文地址:https://www.cnblogs.com/wxxujian/p/12772711.html