zoukankan      html  css  js  c++  java
  • ASP工程文件(csproj)解读

    https://blog.csdn.net/austin_link/article/details/40596185

    C#项目中都会有一个不起眼的文件,后缀名csproj,很多人都会忽视它。其实,这个文件在项目中起到举足轻重的地位。这个文件其实是一个项目的工程文件,不过,正常开发中,这个文件基本上不会需要考虑到。这时候,你应该会问这个文件作用,其实,这个文件记录了与工程有关的相关信息,例如包含的文件,程序的版本,所生成的文件的类型和位置的信息等。

    这个文件其实是给编译工具看的,这个文件记录了这个项目的项目名,项目引用,项目中文件,项目用到的.net版本等等一系列信息,因为之前在做持续集成遇到编译问题,所以花了点时间学习这个文件。

    其中常见节点元素如下:

    1)Project 节点

    <Project ></Project >这个元素是工程文件的根节点,所有其他节点都是在这个节点之下,用于表示项目的范围

    2)Property元素

     在项目中你肯定需要经常访问一些信息,这个节点用于记录项目信息的,例如需要创建的路径名、最终生成的程序集名称等。以name/value的形式添加进Property,随后就可以以$(PropertyName)的形式访问。

    1.  
      <PropertyGroup>
    2.  
      <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    3.  
      <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    4.  
      <ProductVersion>8.0.30703</ProductVersion>
    5.  
      <SchemaVersion>2.0</SchemaVersion>
    6.  
      <ProjectGuid>{F630BB4D-A352-40C1-9C6B-CD9C5F77EAF1}</ProjectGuid>
    7.  
      <OutputType>Library</OutputType>
    8.  
      ...
    9.  
      <RootNamespace>TCBase.Model</RootNamespace>
    10.  
      <AssemblyName>TCBase.Model</AssemblyName>
    11.  
      <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    12.  
      ...
    13.  
      </PropertyGroup>

    这里就需要解释下节点的意思了:

    Configuration节点,可以用于MSBuild传参,后续写关于MSBuild会详细列出,这里参数用于MSBuild编译方式,一种是Dabug,还有一种是Release,直观就是文件生成bin目录中生成是Debug还是Release

    Platform节点,这个是表示运行解决方案平台,在VS项目属性中修改,VS中“配置管理器”-->“活动解决方案平台”修改

    ProkectGuid节点,这个我理解为这个项目在这个解决方案中的唯一标示,可以说是名字,了解的可以补充。

    RootNamespace节点,这个表示这个项目的默认根命名空间名字。

    AssemblyName节点,这个表示项目生成dll后的名字。

         注意,一般一个工程文件会有多个PropertyGroup节点,其中的Platform,AssemblyName等都可以不相同,编译的时候会由传入的参数决定的,如Debug会选择Debug的节点,Release会选择Release节点,默认会使用第一个,不过不建议修改,vs会生成的,除非你对这个非常熟,否则容易改错。

       3)Item元素

    在整个项目文件中提供源代码文件、引用的程序集名称、需要嵌入的图标资源等,最为常用的部分。

    语法:<Item Type=”TheType”Include=”NameOrPath” />

    Type表示资源的类别

        .cs文件设为Source

                程序集为Reference

    Include是具体的资源,可以使路径或者C#源代码文件的名称。如要表示当前项目所有cs文件,可以使用通配符*:

    <Item Type="SourceInclude="*.cs" />

    后面使用的时候就通过@(Source)来调用

    基本Item节点有三种,一是引用dll文件,一是源代码文件,还有一个是当前解决方案中的项目。

       4)ItemGroup元素

    第一种

     

    1.  
      <ItemGroup>
    2.  
      <ReferenceInclude="CnCookieInterface">
    3.  
      <HintPath>..TCWeb.SolutionItemsCnCookieInterface.dll</HintPath>
    4.  
      </Reference>
    5.  
      <ReferenceInclude="System" />
    6.  
      </ItemGroup>

    其中Include后面表示引用在VS中显示引用的名字,这里可以修改,VS默认和文件名相同,如果是系统的就不需要HintPath节点,这个节点表示引用的dll路径,这里一般是相对路径,注意,这里路径错了,引用就找不到了,vs中有问题可以直接到这里修改。

    第二种

     

    1.  
      <ItemGroup>
    2.  
      <CompileInclude="CarCarOrderService.cs" />
    3.  
      <CompileInclude="CommonCashCouponService.cs" />
    4.  
      </ItemGroup>

     

    这个是当前项目的源代码文件即.cs文件。

    第三种

     

    1.  
      <ItemGroup>
    2.  
      <ProjectReferenceInclude="..TCWeb.CoreTCWeb.Core.csproj">
    3.  
      <Project>{AC131436-6FB7-4332-BC6C-7950ECCE55BD}</Project>
    4.  
      <Name>TCWeb.Core</Name>
    5.  
      </ProjectReference>
    6.  
      </ItemGroup>

    这个是引用当前解决方案中的项目,Include中表示引用项目的工程文件,Name表示当前项目名,Project系统生成的,就是上面说的<ProjectGuid>几点

    总体上主要就这三种引用的方式

     

    PS:

     

    1.  
      <Reference Include="FlightInter.MerchantService.Business ">
    2.  
      <SpecificVersion>False</SpecificVersion>
    3.  
      <HintPath>....ExtDllFlightInter.MerchantService.Business.dll</HintPath>
    4.  
      <Private>False</Private>
    5.  
      </Reference>

    注意其中的<Private>属性,被这个坑了一次,这个表示是否复制到本地,不小心改到这个你会发现项目中会无缘无故复制很多文件

  • 相关阅读:
    读书笔记五
    读书笔记四
    读书笔记3(Teamwork)
    读书笔记二(合格的软件工程师)
    读书笔记1(软件 = 程序 + 工程)
    关于使用Java开发Mis系统
    课堂动手动脑
    Quartz学习
    把数据库中取出的DataTable转换成一个对象 或者对象列表
    SAE上使用cron定时发微博
  • 原文地址:https://www.cnblogs.com/liuqiyun/p/9415172.html
Copyright © 2011-2022 走看看