ASP.NET Core 6 基础入门系列(5) 项目结构详解之项目文件管理
- ASP.NET Core 6 基础入门系列(4) 项目结构简介
- ASP.NET Core 6 基础入门系列(3) 新建 ASP.NET Core MVC 6.0 项目
- ASP.NET Core 6 基础入门系列(2) 开发环境准备
- ASP.NET Core 6 基础入门系列(1) ASP.NET Core 6 简介
.NET Core/.NET6+平台下创建的ASP.NET Core Web项目与传统 .NET Framework 平台下创建的 ASP.NET Web 项目相比,项目结构、文件管理方式发生了巨大的变化,本文通过讲解两种形式项目的结构与文件管理方式的差异以加深理解 ASP.NET Core Web 项目的轻量、便捷等优势。
新建一个基于.NET Framework 4.6.1 的ASP.NET MVC Web 项目,结构如下
打开项目所在的目录,找到“DotNetFx461.Web.Study.csproj”项目文件
打开“DotNetFx461.Web.Study.csproj”文件,里面包含下列内容
- 创建项目的VS版本号信息
- 编译条件、目标平台、编译输出类型信息
- 根命名空间、程序集名称
- .NET Framework 框架版本号
- IISExpress 调试信息
- 包含的目录及文件信息(页面文件、js文件、css文件、图片、字体等)
- 引用的系统程序集信息
- 引用的本地第三方程序集信息
- 通过NuGet方式引用的程序集信息

1 <?xml version="1.0" encoding="utf-8"?> 2 <Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 3 <Import Project="..\packages\Microsoft.CodeAnalysis.NetAnalyzers.6.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.props" Condition="Exists('..\packages\Microsoft.CodeAnalysis.NetAnalyzers.6.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.props')" /> 4 <Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" /> 5 <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> 6 <PropertyGroup> 7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> 9 <ProductVersion> 10 </ProductVersion> 11 <SchemaVersion>2.0</SchemaVersion> 12 <ProjectGuid>{FAD3146B-0AB3-4B55-8149-78CFF1E1AFC7}</ProjectGuid> 13 <ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids> 14 <OutputType>Library</OutputType> 15 <AppDesignerFolder>Properties</AppDesignerFolder> 16 <RootNamespace>DotNetFx461.Web.Study</RootNamespace> 17 <AssemblyName>DotNetFx461.Web.Study</AssemblyName> 18 <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> 19 <MvcBuildViews>false</MvcBuildViews> 20 <UseIISExpress>true</UseIISExpress> 21 <Use64BitIISExpress /> 22 <IISExpressSSLPort /> 23 <IISExpressAnonymousAuthentication /> 24 <IISExpressWindowsAuthentication /> 25 <IISExpressUseClassicPipelineMode /> 26 <UseGlobalApplicationHostFile /> 27 <NuGetPackageImportStamp> 28 </NuGetPackageImportStamp> 29 </PropertyGroup> 30 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 31 <DebugSymbols>true</DebugSymbols> 32 <DebugType>full</DebugType> 33 <Optimize>false</Optimize> 34 <OutputPath>bin\</OutputPath> 35 <DefineConstants>DEBUG;TRACE</DefineConstants> 36 <ErrorReport>prompt</ErrorReport> 37 <WarningLevel>4</WarningLevel> 38 </PropertyGroup> 39 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 40 <DebugSymbols>true</DebugSymbols> 41 <DebugType>pdbonly</DebugType> 42 <Optimize>true</Optimize> 43 <OutputPath>bin\</OutputPath> 44 <DefineConstants>TRACE</DefineConstants> 45 <ErrorReport>prompt</ErrorReport> 46 <WarningLevel>4</WarningLevel> 47 </PropertyGroup> 48 <ItemGroup> 49 <Reference Include="Microsoft.CSharp" /> 50 <Reference Include="System" /> 51 <Reference Include="System.Data" /> 52 <Reference Include="System.Drawing" /> 53 <Reference Include="System.Web.DynamicData" /> 54 <Reference Include="System.Web.Entity" /> 55 <Reference Include="System.Web.ApplicationServices" /> 56 <Reference Include="System.ComponentModel.DataAnnotations" /> 57 <Reference Include="System.Core" /> 58 <Reference Include="System.Data.DataSetExtensions" /> 59 <Reference Include="System.Xml.Linq" /> 60 <Reference Include="System.Web" /> 61 <Reference Include="System.Web.Extensions" /> 62 <Reference Include="System.Web.Abstractions" /> 63 <Reference Include="System.Web.Routing" /> 64 <Reference Include="System.Xml" /> 65 <Reference Include="System.Configuration" /> 66 <Reference Include="System.Web.Services" /> 67 <Reference Include="System.EnterpriseServices" /> 68 <Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 69 <Private>True</Private> 70 <HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath> 71 </Reference> 72 <Reference Include="System.Net.Http"> 73 </Reference> 74 <Reference Include="System.Net.Http.WebRequest"> 75 </Reference> 76 <Reference Include="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 77 <Private>True</Private> 78 <HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.Helpers.dll</HintPath> 79 </Reference> 80 <Reference Include="System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 81 <Private>True</Private> 82 <HintPath>..\packages\Microsoft.AspNet.Mvc.5.2.7\lib\net45\System.Web.Mvc.dll</HintPath> 83 </Reference> 84 <Reference Include="System.Web.Optimization"> 85 <HintPath>..\packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll</HintPath> 86 </Reference> 87 <Reference Include="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 88 <Private>True</Private> 89 <HintPath>..\packages\Microsoft.AspNet.Razor.3.2.7\lib\net45\System.Web.Razor.dll</HintPath> 90 </Reference> 91 <Reference Include="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 92 <Private>True</Private> 93 <HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.dll</HintPath> 94 </Reference> 95 <Reference Include="System.Web.WebPages.Deployment, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 96 <Private>True</Private> 97 <HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Deployment.dll</HintPath> 98 </Reference> 99 <Reference Include="System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 100 <Private>True</Private> 101 <HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Razor.dll</HintPath> 102 </Reference> 103 <Reference Include="Newtonsoft.Json"> 104 <HintPath>..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll</HintPath> 105 </Reference> 106 <Reference Include="WebGrease"> 107 <Private>True</Private> 108 <HintPath>..\packages\WebGrease.1.6.0\lib\WebGrease.dll</HintPath> 109 </Reference> 110 <Reference Include="Antlr3.Runtime"> 111 <Private>True</Private> 112 <HintPath>..\packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll</HintPath> 113 </Reference> 114 </ItemGroup> 115 <ItemGroup> 116 <Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform"> 117 <HintPath>..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath> 118 </Reference> 119 </ItemGroup> 120 <ItemGroup> 121 <Compile Include="App_Start\BundleConfig.cs" /> 122 <Compile Include="App_Start\FilterConfig.cs" /> 123 <Compile Include="App_Start\RouteConfig.cs" /> 124 <Compile Include="Controllers\HomeController.cs" /> 125 <Compile Include="Global.asax.cs"> 126 <DependentUpon>Global.asax</DependentUpon> 127 </Compile> 128 <Compile Include="Models\Class2.cs" /> 129 <Compile Include="Properties\AssemblyInfo.cs" /> 130 </ItemGroup> 131 <ItemGroup> 132 <Content Include="Content\bootstrap-theme.css" /> 133 <Content Include="Content\bootstrap-theme.min.css" /> 134 <Content Include="Content\bootstrap.css" /> 135 <Content Include="Content\bootstrap.min.css" /> 136 <Content Include="favicon.ico" /> 137 <Content Include="fonts\glyphicons-halflings-regular.svg" /> 138 <Content Include="Global.asax" /> 139 <Content Include="Content\Site.css" /> 140 <Content Include="Scripts\bootstrap.js" /> 141 <Content Include="Scripts\bootstrap.min.js" /> 142 <None Include="Scripts\jquery-3.4.1.intellisense.js" /> 143 <Content Include="Scripts\jquery-3.4.1.js" /> 144 <Content Include="Scripts\jquery-3.4.1.min.js" /> 145 <Content Include="Scripts\jquery-3.4.1.slim.js" /> 146 <Content Include="Scripts\jquery-3.4.1.slim.min.js" /> 147 <None Include="Scripts\jquery.validate-vsdoc.js" /> 148 <Content Include="Scripts\jquery.validate.js" /> 149 <Content Include="Scripts\jquery.validate.min.js" /> 150 <Content Include="Scripts\jquery.validate.unobtrusive.js" /> 151 <Content Include="Scripts\jquery.validate.unobtrusive.min.js" /> 152 <Content Include="Scripts\modernizr-2.8.3.js" /> 153 <Content Include="Web.config" /> 154 <Content Include="Web.Debug.config"> 155 <DependentUpon>Web.config</DependentUpon> 156 </Content> 157 <Content Include="Web.Release.config"> 158 <DependentUpon>Web.config</DependentUpon> 159 </Content> 160 <Content Include="Views\Web.config" /> 161 <Content Include="Views\_ViewStart.cshtml" /> 162 <Content Include="Views\Shared\Error.cshtml" /> 163 <Content Include="Views\Shared\_Layout.cshtml" /> 164 <Content Include="Views\Home\About.cshtml" /> 165 <Content Include="Views\Home\Contact.cshtml" /> 166 <Content Include="Views\Home\Index.cshtml" /> 167 </ItemGroup> 168 <ItemGroup> 169 <Folder Include="App_Data\" /> 170 </ItemGroup> 171 <ItemGroup> 172 <Content Include="fonts\glyphicons-halflings-regular.woff2" /> 173 <Content Include="fonts\glyphicons-halflings-regular.woff" /> 174 <Content Include="fonts\glyphicons-halflings-regular.ttf" /> 175 <Content Include="fonts\glyphicons-halflings-regular.eot" /> 176 <Content Include="Content\bootstrap.min.css.map" /> 177 <Content Include="Content\bootstrap.css.map" /> 178 <Content Include="Content\bootstrap-theme.min.css.map" /> 179 <Content Include="Content\bootstrap-theme.css.map" /> 180 <None Include="packages.config" /> 181 <Content Include="Scripts\jquery-3.4.1.slim.min.map" /> 182 <Content Include="Scripts\jquery-3.4.1.min.map" /> 183 </ItemGroup> 184 <ItemGroup> 185 <Analyzer Include="..\packages\Microsoft.CodeAnalysis.NetAnalyzers.6.0.0\analyzers\dotnet\cs\Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll" /> 186 <Analyzer Include="..\packages\Microsoft.CodeAnalysis.NetAnalyzers.6.0.0\analyzers\dotnet\cs\Microsoft.CodeAnalysis.NetAnalyzers.dll" /> 187 </ItemGroup> 188 <PropertyGroup> 189 <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> 190 <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> 191 </PropertyGroup> 192 <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> 193 <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" /> 194 <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" /> 195 <Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'"> 196 <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" /> 197 </Target> 198 <ProjectExtensions> 199 <VisualStudio> 200 <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}"> 201 <WebProjectProperties> 202 <UseIIS>True</UseIIS> 203 <AutoAssignPort>True</AutoAssignPort> 204 <DevelopmentServerPort>4565</DevelopmentServerPort> 205 <DevelopmentServerVPath>/</DevelopmentServerVPath> 206 <IISUrl>http://localhost:4565/</IISUrl> 207 <NTLMAuthentication>False</NTLMAuthentication> 208 <UseCustomServer>False</UseCustomServer> 209 <CustomServerUrl> 210 </CustomServerUrl> 211 <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile> 212 </WebProjectProperties> 213 </FlavorProperties> 214 </VisualStudio> 215 </ProjectExtensions> 216 <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> 217 <PropertyGroup> 218 <ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText> 219 </PropertyGroup> 220 <Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" /> 221 <Error Condition="!Exists('..\packages\Microsoft.CodeAnalysis.NetAnalyzers.6.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.CodeAnalysis.NetAnalyzers.6.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.props'))" /> 222 <Error Condition="!Exists('..\packages\Microsoft.CodeAnalysis.NetAnalyzers.6.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.CodeAnalysis.NetAnalyzers.6.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.targets'))" /> 223 </Target> 224 <Import Project="..\packages\Microsoft.CodeAnalysis.NetAnalyzers.6.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.targets" Condition="Exists('..\packages\Microsoft.CodeAnalysis.NetAnalyzers.6.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.targets')" /> 225 <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 226 Other similar extension points exist, see Microsoft.Common.targets. 227 <Target Name="BeforeBuild"> 228 </Target> 229 <Target Name="AfterBuild"> 230 </Target> --> 231 </Project>
仔细阅读上述配置信息,可以得出如下结论:
(1)打开方式:本地文件资源管理器
(2)内容:管理项较多,内容复杂。
(3)文件大小:12K。
(4)项目文件包含:强关联(第119行至182行,通过<Content Include="xxx文件" />实现包含),包含文件夹与文件。
(5)项目文件排除:从项目文件中直接删除 <Content Include="xxx文件" /> 配置项。
新建一个 ASP.NET Core 6.0 Web 项目,结构如下
打开项目所在的目录,找到“DotNet6_Web_Study.csproj”项目文件
打开“DotNet6_Web_Study.csproj”项目文件内容如下:
1 <Project Sdk="Microsoft.NET.Sdk.Web"> 2 3 <PropertyGroup> 4 <TargetFramework>net6.0</TargetFramework> 5 <Nullable>enable</Nullable> 6 <ImplicitUsings>enable</ImplicitUsings> 7 </PropertyGroup> 8 9 10 <ItemGroup> 11 <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.7" /> 12 </ItemGroup> 13 14 <ItemGroup> 15 <ProjectReference Include="..\DotNet6_Study.Common\DotNet6_Study.Common.csproj" /> 16 </ItemGroup> 17 18 </Project>
这种方式打开相对麻烦,.NET Core /.NET6+ 项目提供了直接编辑项目文件的便捷方式。点击项目名称,右键->编辑项目文件
在VS中直接打开.csproj文件,并且可以直接编辑,保存后即刻生效
【直接编辑项目文件】的功能不限于ASP.NET Core Web项目,同样适用于基于.NET Core/.NET6+平台创建的控制台应用程序、WinForm窗体程序、WPF程序等。
默认的项目文件内容如下:
1 <Project Sdk="Microsoft.NET.Sdk.Web"> 2 3 <PropertyGroup> 4 <TargetFramework>net6.0</TargetFramework> 5 <Nullable>enable</Nullable> 6 <ImplicitUsings>enable</ImplicitUsings> 7 </PropertyGroup> 8 9 10 <ItemGroup> 11 <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.7" /> 12 </ItemGroup> 13 14 <ItemGroup> 15 <ProjectReference Include="..\DotNet6_Study.Common\DotNet6_Study.Common.csproj" /> 16 </ItemGroup> 17 18 </Project>
(1)打开方式:本地文件资源管理器、VS中直接打开并编辑,更便捷。
(2)内容:管理项内容简洁。
(3)文件大小:1K。
(4)项目文件包含
在ASP.NET Core中,项目文件不包含任何文件夹或文件引用,改由文件系统来确定哪些文件或文件夹属于项目。在项目的根目录中存在的所有文件或文件夹都属于项目的一部分,并将显示在解决方案资源管理器中。因此当开发者在添加文件或文件夹时,该文件或文件夹将自动变成项目的一部分,会立即显示在解决方案资源管理器中。
(5)项目文件排除:通过 <Compile Remove="xxxx文件" /> 实现。
当在解决方案资源管理器的任何文件夹中删除文件或文件夹时,被删除的文件或文件夹不再是项目的一部分,在解决方案资源管理器中将不再显示。
通过以上对比,可以得出如下结论:
在.NET Framework项目中,项目中所有的代码文件都要添加到*.csproj文件中,如果一个C#文件放在项目文件夹下,但是没有被添加到*.csproj文件中,那么这个文件是不会被编译的。
用.NET Framework开发过团队项目的开发人员可能遇到过*.csproj文件修改冲突的问题。两个开发人员共同开发一个项目,各自向项目中添加了文件,就很容易造成*.csproj文件修改冲突的问题,这非常影响团队开发的效率。
但是.NET Core项目就不同了,.NET Core项目中的文件不用添加到*.csproj.文件中,项目下所有的文件默认都被自动包含到项目中,除非被手动排除。*.csproj文件中.NET Framework项目中的配置方式正好和.NET Core中的相反,毕竟在开发项目的时候,开发人员主动排除某个文件不是经常发生的,而向项目中添加文件是非常频繁的操作,.NET Core这样的优化尽可能避免了文件修改的冲突,从而提升了团队开发的效率。.NET Framework和.NET Core项目还有一个不同之处就是.NET Core项目没有App.config或Web.config文件,因为NET Core项目中的配置有不同的使用方式,在后续的博客中会有详细的讲解。

更多信息请参考微软官方文档《.NET 项目 SDK》:https://docs.microsoft.com/zh-CN/dotnet/core/project-sdk/overview
.NET SDK 是 .NET 的基本 SDK。 其他 SDK 引用 .NET SDK,与其他 SDK 关联的项目具有所有可用的 .NET SDK 属性。 例如,Web SDK 依赖于 .NET SDK 和 Razor SDK。还可以创建自己的 SDK,并通过 NuGet 进行分发。
.NET 项目基于 MSBuild 格式。 具有扩展名(如用于 C# 项目的 .csproj 和用于 F# 项目的 .fsproj)的项目文件都是 XML 格式的 。 MSBuild 项目文件的根元素是 Project 元素。 Project
元素有一个可选的 Sdk
属性,该属性指定要使用的 SDK(和版本)。 若要使用 .NET 工具并构建你的代码,请将 Sdk
属性设置为 可用 SDK 表中的其中一个 ID。
<TargetFramework>元素用于指定应用程序的目标框架,比如我们的应用程序中的TargetFramework的值为net6.0。
.NET Core 引入了一个Target Framework Moniker,简称TFM。目标框架通常由 TFM 引用。 下表显示 .NET SDK 和 NuGet 客户端支持的目标框架,等效项显示在括号内。 例如,win81
对于 netcore451
来说等效于 TFM。
关于《SDK 样式项目中的目标框架》,请参考微软官方文档:https://docs.microsoft.com/zh-cn/dotnet/standard/frameworks
参考文献:
- https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/?view=aspnetcore-6.0&tabs=windows
成在管理,败在经验;嬴在选择,输在不学! 贵在坚持!
个人作品
BIMFace.SDK.NET
开源地址:https://gitee.com/NAlps/BIMFace.SDK
系列博客:https://www.cnblogs.com/SavionZhang/p/11424431.html
系列视频:https://www.cnblogs.com/SavionZhang/p/14258393.html
技术栈
1、AI、DeepSeek、MiniMax、通义千问
2、Visual Studio、.NET Core/.NET、MVC、Web API、RESTful API、gRPC、SignalR、Java、Python
3、jQuery、Vue.js、Bootstrap、ElementUI
4、数据库:分库分表、读写分离、SQLServer、MySQL、PostgreSQL、Redis、MongoDB、ElasticSearch、达梦DM、GaussDB、OpenGauss
5、架构:DDD、ABP、SpringBoot、jFinal
6、环境:跨平台、Windows、Linux
7、移动App:Android、IOS、HarmonyOS、微信小程序、钉钉、uni-app、MAUI
8、分布式、高并发、云原生、微服务、Docker、CI/CD、DevOps、K8S;Dapr、RabbitMQ、Kafka、RPC、Elasticsearch
欢迎关注作者头条号 张传宁IT讲堂,获取更多IT文章、视频等优质内容。
出处:www.cnblogs.com/SavionZhang
作者:张传宁 技术顾问、培训讲师、微软MCP、系统架构设计师、系统集成项目管理工程师、科技部创新工程师。
专注于企业级通用开发平台、工作流引擎、自动化项目(代码)生成器、SOA 、DDD、 云原生(Docker、微服务、DevOps、CI/CD);PDF、CAD、BIM 审图等研究与应用。
多次参与电子政务、图书教育、生产制造等企业级大型项目研发与管理工作。
熟悉中小企业软件开发过程:可行调研、需求分析、架构设计、编码测试、实施部署、项目管理。通过技术与管理帮助中小企业实现互联网转型升级全流程解决方案。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如有问题,可以通过邮件905442693@qq.com联系。共同交流、互相学习。
如果您觉得文章对您有帮助,请点击文章右下角【推荐】。您的鼓励是作者持续创作的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
2019-09-10 C#开发BIMFACE系列26 服务端API之获取模型数据11:获取单个面积分区信息
2019-09-10 C#开发BIMFACE系列25 服务端API之获取模型数据10:获取楼层对应面积分区列表
2019-09-10 C#开发BIMFACE系列24 服务端API之获取模型数据9:获取单个房间信息