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.SolutionItems\CnCookieInterface.dll</HintPath>

  4.  

    </Reference>

  5.  

    <ReferenceInclude="System" />

  6.  

    </ItemGroup>

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

第二种

  1. <ItemGroup>

  2.  

    <CompileInclude="Car\CarOrderService.cs" />

  3.  

    <CompileInclude="Common\CashCouponService.cs" />

  4.  

    </ItemGroup>

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

第三种

  1. <ItemGroup>

  2.  

    <ProjectReferenceInclude="..\TCWeb.Core\TCWeb.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>..\..\ExtDll\FlightInter.MerchantService.Business.dll</HintPath>

  4.  

    <Private>False</Private>

  5.  

    </Reference>

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

原文地址:https://www.cnblogs.com/liuqiyun/p/9415172.html

时间: 2024-10-09 11:34:07

ASP工程文件(csproj)解读的相关文章

工程文件csproj使用编译条件指定属性

csproj工程文件中有很多xml格式的属性,比如PropertyGroup.ItemGroup,某些属性操作默认是全部的或者是当前编译条件的而已,当我们想指定某些属性只在某个编译条件下发生时就可以通过以下xml属性来指定: Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'" 或者 Condition=" '$(Configuration)' == 'Debug' " 例如,Release和Debug

【转】全面解析Unity3D自动生成的脚本工程文件

http://blog.csdn.net/jjiss318/article/details/7632041 我们在Unity3D开发的时候,经常会看到它会产生不少固定命名工程文件,诸如: Assembly-CSharp-vs.csproj Assembly-CSharp-firstpass-vs.csproj Assembly-CSharp-Editor-vs.csproj Assembly-CSharp-Editor-firstpass-vs.csproj 看得不少人云里雾里的.那么,这些工程

配置工程文件dll编译后copy路径

放到工程文件的最后面的配置节点: 下面的配置节点中生成路径换成实际的相对路径就可以了 修改:Prject.csproj 文件里面的配置节点  project配置节点里面的最后面 <Target Name="AfterBuild"> <Copy SourceFiles="$(TargetDir)$(TargetFileName);$(TargetDir)$(TargetName).pdb;" DestinationFolder="生成路径&

Asp.Net 文件操作基类

using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.T

VC++的工程文件

VC++的工程文件说明: *.dsp:是VC++的项目文件,文本格式. *.dsw:是工作区文件,它可以指向一个或多个.dsp文件. *.clw:是 ClassWizard信息文件,实际上是INI文件的格式. *.opt:工程关于开发环境的参数文件,如工具条位置等信息. *.aps:(AppStudio File),资源辅助文件,二进制格式. *.rc:资源文件. *.plg:是编译信息文件,编译时的error和warning信息文件,在Tools->Options里面有个选项可以控制这个文件的

你以为的ASP.NET文件上传大小限制是你以为的吗

我们以为的文件大小限制 我们大家都知道ASP.NET为我们提供了文件上传服务器控件FileUpload,默认情况下可上传的最大文件为4M,如果要改变可上传文件大小限制,那么我们可以在web.config中的httpRuntime元素中添加maxRequestLength属性设置大小,同时为了支持大文件上传超时可以添加executionTimeout属性设置超时时间.网上有很多这样的例子,但实际情况是否是这样吗? <httpRuntime maxRequestLength="" e

Discard all changes 导致工程文件消失

当使用CocoaPods导入第三方框架进行iOS应用开发的时候,不要选择下图中的 Discard All Changes.. 因为直接Commit到git时,导入的第三方框架不会被记录,尤其是在使用CocoaPods的时候,选择该选项会导致通过pod install生成的xcworkspace文件直接消失. 更恰当的方式是通过终端以命令行的方式回滚代码. 本地代码库回滚: git reset --hard commit-id :将代码回滚到commit-id时的状态 git reset --ha

Xcode 工程文件打开不出来, cannot be opened because the project file cannot be parsed.

svn更新代码后,打开xcode工程文件,会出现  xxx..xcodeproj  cannot be opened because the project file cannot be parsed. 因为.xcodeproj工程文件冲突了,然后还是会强制更新,内部文件出现了冲突,所以解析不了文件. 会出现这样的冲突消息: <<<<<<< .mine 9ADAAC6A15DCEF6A0019ACA8 .... in Resources */, ======= 5

【温故Delphi】双击工程文件打开软件

问题描述 大部分软件都有鼠标双击文件,就能打开所关联的软件并打开所选工程,这是如何做到的呢? 把文件关联到一个程序中,双击文件来启动程序,那么这个文件名称就是这个程序的命令行的一个参数. 所以要想实现双击工程文件打开软件,在程序运行入口必须要处理命令行. 代码说明 1 begin 2 Application.Initialize; 3 CreateMainForm(); 4 //GetCommandLine为Win32 API,用于获取命令行内容 5 HandleCommandLine(GetC