CSharp工程中的几个文件

絕刀狂花
发布: 2025-08-29 08:20:16
原创
417人浏览过

c#开发中,几个关键的配置文件起着至关重要的作用。以下是对这些文件的详细介绍和使用指南:

.csproj

.csproj文件是项目配置文件,用于定义项目信息,如:

  • 程序集名称
  • 目标Framework版本
  • 项目包含的文件信息(如.cs、.html、.js、.config、.xml等)
  • 项目引用的程序集信息,包括本地dll和Nuget包
  • Visual Studio中对项目的配置

Visual Studio根据.csproj文件的内容来加载项目,可以将其视为.csproj文件的图形化管理工具

Web.config & App.config

在.NET Framework中,创建Web项目(如MVC或Web API)时,根目录会生成Web.config文件;创建控制台程序时会生成App.config文件。以Web.config为例,该文件用于配置Web项目运行时所需的信息,如:

  • Framework版本信息

    <system.web>
      <compilation debug="true" targetFramework="4.6.2" />
      <httpRuntime targetFramework="4.6.2" />
    </system.web>
    登录后复制
  • 编译器信息

    <system.codedom>
      <compilers>
        <compiler compilerOptions="/langversion:default /nowarn:1659;1699;1701" extension=".cs" language="c#;cs;csharp" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" />
      </compilers>
    </system.codedom>
    登录后复制
  • 所引用的程序集信息 注意,这里引用的程序集是项目运行时所需的,而.csproj中描述的程序集是项目中添加的引用,二者有区别:项目中添加的引用在运行时未必会用到。

    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
          <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
          <bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" />
        </dependentAssembly>
        <dependentAssembly>
          <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
          <bindingRedirect oldVersion="0.0.0.0-5.2.4.0" newVersion="5.2.4.0" />
        </dependentAssembly>
      </assemblyBinding>
    </runtime>
    登录后复制

若项目启动后报错“未能加载文件或程序集‘XXXXXX’或它的某一个依赖项,找到的程序集清单定义与程序集引用不匹配”,则应检查项目引用的dll文件与Web.config中配置的dll文件信息是否一致。

点击此处,可查看关于配置文件中bindingRedirect的解释。

.NET Core

.NET Core官方项目模板中默认不生成App.config或Web.config。注意,.NET Core项目(Console、ASP.NET Core)本质上是控制台程序,若要使用XML格式作为配置文件,建议使用App.config。

Nuget & packages.config

Nuget

在Windows系统中,可以通过

%AppData%\NuGet\NuGet.config
登录后复制
对Nuget进行配置,文件结构如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="globalPackagesFolder" value="D:\Dev\Nuget\Packages" />
  </config>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
  </packageSources>
  <packageRestore>
    <add key="enabled" value="True" />
    <add key="automatic" value="True" />
  </packageRestore>
  <bindingRedirects>
    <add key="skip" value="False" />
  </bindingRedirects>
  <packageManagement>
    <add key="format" value="0" />
    <add key="disabled" value="False" />
  </packageManagement>
  <disabledPackageSources>
  </disabledPackageSources>
</configuration>
登录后复制

.NET Framework

百度文心百中
百度文心百中

百度大模型语义搜索体验中心

百度文心百中 22
查看详情 百度文心百中

packages.config是项目中用于管理Nuget包引用的文件,对于Nuget包的操作(添加、删除与版本变更)都会反映到该文件中。也可以直接操作该文件来修改项目中的Nuget包,但不建议这么做。文件结构如下:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="EntityFramework" version="6.2.0" targetFramework="net462" />
  <package id="Microsoft.AspNet.WebApi" version="5.2.4" targetFramework="net462" />
</packages>
登录后复制

默认在sln文件所在目录下会生成packages文件夹用于存放项目引用的Nuget包:

CSharp工程中的几个文件

我们通过Nuget命令行或者Visual Studio中的图形界面来管理Nuget包,当Nuget包发生变更时,packages.config与.csproj文件内容及packages文件夹都会发生相应的变化。如,我们添加对Dapper的引用后:

packages.config:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Dapper" version="1.50.0" targetFramework="net461" />
</packages>
登录后复制

.csproj:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <Reference Include="Dapper, Version=1.50.0.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\Dapper.1.50.0\lib\net451\Dapper.dll</HintPath>
    </Reference>
  </ItemGroup>
</Project>
登录后复制

若直接修改packages.config中的内容,如,直接删除packages.config中对某个包的引用,.csproj文件中依然保留了对该包的引用,及packages文件夹中也会保留该包。这样很有可能导致项目引用的混乱,所以,不建议直接操作packages.config文件。

.NET Core

.NET Core项目中不再使用packages.config文件来管理Nuget包,对于Nuget包的引用直接反映到.csproj文件中:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <Folder Include="wwwroot\" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.2" PrivateAssets="All" />
  </ItemGroup>
</Project>
登录后复制

Windows系统下.NET Core中Nuget包位于

%UserProfile%\.nuget\packages
登录后复制

可以使用.NET Core提供的CLI中的命令来获取nuget包的位置:

dotnet nuget locals all -l
info : http-cache: C:\Users\xfh\AppData\Local\NuGet\v3-cache
info : global-packages: C:\Users\xfh\.nuget\packages
info : temp: C:\Users\xfh\AppData\Local\Temp\NuGetScratch
info : plugins-cache: C:\Users\xfh\AppData\Local\NuGet\plugins-cache
登录后复制

也可以使用Nuget自身命令来获取nuget包位置:

nuget locals all -l
info : http-cache: C:\Users\xfh\AppData\Local\NuGet\v3-cache
info : global-packages: C:\Users\xfh\.nuget\packages
info : temp: C:\Users\xfh\AppData\Local\Temp\NuGetScratch
登录后复制

小结

通过以上介绍,我们可以了解到.csproj、Web.config/App.config、packages.config等文件在C#项目中的重要作用和使用方法。正确配置这些文件对于项目的顺利运行和管理至关重要。

以上就是CSharp工程中的几个文件的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号