作者:夏晶阳--艺术 | 来源:互联网 | 2023-09-02 18:29
以下基于.NETFramework4.6及.NETCore2.0.csproj用于配置项目信息,如:程序集名称、类型Framework版本项目所包含的文件信息,如:cs、html、
以下基于.NET Framework4.6及.NET Core2.0
.csproj
用于配置项目信息,如:
- 程序集名称、类型
- Framework版本
- 项目所包含的文件信息,如:cs、html、js、config、xml等
- 项目所引用的程序集信息,包含本地dll与Nuget包
- 其它信息
Visual Studio中对项目所做的配置,均可在该文件中表现出来。同样,Visual Studio也是根据该文件中的内容来加载项目的。抛开Visual Studio的其它功能,可以将其看作是.csproj文件的图形管理工具。
Web.config & App.config
.NET Framework
使用Visual Studio创立Web项目(MVC或者Web Api)时,会在根目录生成Web.config文件。创立控制台程序则会生成App.config文件。以Web.config为例,该文件用于配置Web项目运行时所需的信息,如:
Framework版本信息
编译器信息
所引用的程序集信息
注意,这里所引用的是项目在运行时所需的程序集,而.csproj中形容的程序集是项目中增加的引用,二者有区别:项目中增加的引用在运行时未必会用到。
若项目启动后报错:未能加载文件或者程序集“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进行配置,文件结构如下:
.NET Framework
packages.config是项目中用于管理Nuget包的引用的文件,对于Nuget包的操作(增加、删除与版本变更)都会反映到该文件中。也可以直接操作该文件来修改项目中的Nuget包,但不建议这么做。文件结构如下:
默认在sln文件所在目录下会生成packages文件夹用于存放项目引用的Nuget包:
packages_floder
我们通过Nuget命令行或者者Visual Studio中的图形界面来管理Nuget包,当Nuget包发生变更时,packages.config与.csproj文件内容及packages文件夹都会发生相应的变化。如,我们增加对Dapper的引用后
packages.config:
.csproj:
..\packages\Dapper.1.50.0\lib\net451\Dapper.dll
若直接修改packages.config中的内容,如,直接删除packages.config中对某个包的引用,.csproj文件中仍然保留了对该包的引用,及packages文件夹中也会保留该包。这样很有可能导致项目引用的混乱,所以,不建议直接操作packages.config文件。
.NET Core
.NET Core项目中不在使用packages.config文件文件管理Nuget包,对于Nuget包的引用直接反映到.csproj文件中:
netcoreapp2.1
sln文件所在目录下也没有packages文件夹。Windows系统下.NET Core中Nuget包位于%UserProfile%\.nuget\packages
可以使用.NET Core提供的CLI中的命令来获取nuget包的位置:
dotnet nuget locals all -linfo : http-cache: C:\Users\xfh\AppData\Local\NuGet\v3-cacheinfo : global-packages: C:\Users\xfh\.nuget\packages\info : temp: C:\Users\xfh\AppData\Local\Temp\NuGetScratchinfo : plugins-cache: C:\Users\xfh\AppData\Local\NuGet\plugins-cache
也可以使用Nuget自身命令来获取nuget包位置:
nuget locals all -linfo : http-cache: C:\Users\xfh\AppData\Local\NuGet\v3-cacheinfo : global-packages: C:\Users\xfh\.nuget\packages\info : temp: C:\Users\xfh\AppData\Local\Temp\NuGetScratch
小结
以上,是自己的少量总结,与大家分享。
推荐阅读
Assembly Binding redirect: How and Why?