VS.Net中按 F5 时项目的生成顺序

VS2017的C++开发心得(四)VS的文件夹路径以及项目生成步骤 这篇先来理一理VS的文件夹路径,以及几个关键的路径宏。 先看看解决方案根目录: 这个结构很简单,解决方案下一个项目对应一个文件夹,一配置对应一个生成文件夹。 项目文件夹:存放项目的代码、项目配置文件以及项目的中间编译结果,如下: 打开Debug文件夹,看看项目生成候产生了哪些东西: 这里要先简单介绍下VS项目生成步骤。VS项目生成大致分成四步:分析、编译、链接、生成... 阅读详情

读别人的代码,我在一个类的无参公共构造函数里加了个MessageBox,但单步跟踪到这个构造函数的时候,并未执行MessageBox这句话就跳过去了,这让我好生奇怪:它有什么理由不执行呢?研究半天后恍然大悟:这是一个类库项目,而修改后我并未重新生成此类库——脑子暂时短路的结果。

但在意识到脑子短路之前,我却考虑了很多:此类继承自另一个类,难道是继承上出了问题?不厌其烦的我甚至启动Snippet Compiler,亲手写了个简单的父类、子类,包括构造函数的无参、有参、不写三种情况,把构造函数在继承中的执行方式重新复习了一遍。结果当然是一切均按预想的流程工作:构造子类对象时首先执行父类构造函数,然后再执行子类构造函数;如果子类没有构造函数,表面上看只执行了父类的构造函数,但据说实际上还执行了一个运行时提供的无参公共构造函数(书上这么说的,但跟踪不到,反正啥也没干)。

在脑子恢复正常之后,我意识到应该把VS.Net中①生成解决方案(Ctrl+Shift+F5)、②重新生成解决方案、③生成项目、④重新生成项目、⑤启动(F5)、⑥开始执行不调试(Ctrl+F5)、⑦逐语句(F11)、⑧逐过程(F10) 这些概念重新明确一下。前四个是跟目标程序的生成相关,后四个跟程序执行、调试相关。查MSDN:

①生成解决方案(Ctrl+Shift+F5):只编译自上次生成以来更改过的那些项目文件和组件。
②重新生成解决方案:首先“清理”解决方案,然后生成所有项目文件和组件。“清理”解决方案或项目将删除所有中间文件和输出文件,只留下项目文件和组件文件,以后可以
从这些文件生成中间文件和输出文件的新实例。
③生成项目:只生成自上次生成以来更改过的那些项目组件。
④重新生成项目:首先“清理”项目,然后生成项目文件和所有的项目组件。
⑤启动(F5):应用程序启动并一直运行到断点。
⑥开始执行不调试(Ctrl+F5):在不使用调试器的情况下开始执行项目,即断点不起作用
⑦逐语句(F11):执行下一行代码,如果下一行包含函数调用,则在函数内的第一个代码行处停止。
⑧逐过程(F10):执行下一行代码,如果下一行包含函数调用,则执行整个函数,然后在函数外的第一个行处停止。

这么看以上八个概念都很简单明了,没什么难的地方,但我想搞清楚的是如果不“生成”,直接执行调试,比如按F5后VS.Net如何处理生成呢?

可以肯定的是,按F5后当前项目肯定要执行生成操作,至于同一解决方案下的其它项目,是否要生成及按何种顺序生成,取决于以下几个因素:

因素一:是否当前项目的依赖项

依赖项若是以.Net类库的形式被添加到当前项目的引用中,则缺省情况下并未打对勾;若添加引用时依赖项是以项目的形式添加,则缺省就是打了对勾,且为灰显不能去掉。

VS.Net的处理方式:在任何情况下依赖项都会生成,顺序上优先于当前项目

因素二:项目生成顺序


项目生成顺序受“项目依赖项”对话框内的设置影响,应该以相反的顺序选择项目,即最先选择需要最后生成的项目。

VS.Net的处理方式:按照“项目生成顺序”中指定的顺序生成

因素三:VS.Net 的选项设置中是否选择了“仅在运行时生成启动项目和依赖项”选项。

MSDN中说该选项影响 ①生成解决方案(Ctrl+Shift+F5) 和 ⑤启动(F5) 两个命令,但经我测试发现影响①、⑤、⑥、⑦、⑧五个命令,其实⑤、⑥、⑦、⑧就VS.Net的生成事件而言是一回事。

VS.Net的处理方式:若打勾,则仅生成当前启动项目及其依赖项;否则将会生成所有项目、它们的依赖项以及解决方案文件。

至此,项目的生成问题算是搞得比较清楚了,但还有两个问题不甚明了:
1. 设计一个类时,空的公共无参构造函数有没有必要写?本来是不必要写的,运行时会默认提供;但若写了会方便调试,不会出现跟踪不到的情况。
2. 如果按照解释执行的语言、编译执行的语言来分类,C#应该算哪种呢?.Net下有没有翻译执行、编译执行的概念呢?
  

VS2022里给ASP.NET项目装上DevExpress控件,我踩过的坑你别再踩了 本文详细介绍了在VS2022中为ASP.NET项目集成DevExpress控件的实战经验,重点解析了安装过程中的常见问题及解决方案。从安装器选择、防火墙拦截到工具箱控件消失等典型问题,提供了系统性的排查指南和优化建议,帮助开发者高效完成控件集成并避免常见陷阱。 阅读详情

相关推荐

基于VS2008的Wince系统的SQLCE3.5数据库开发应用实例

1.       概述 SQLCE3.5数据库安装以及扬创科技嵌入式WinCE工业平板电脑SQLCE和SQLServer数据库同步配置;安装步骤依次为IIS安装、客户端安装、服务端安装。 2.       SQLCE数据库的使用 SQLCE简介     微软推出SQLSEVER数据库,功能强大,使用方便。其针对嵌入式设备的版本为SQL SEVER FOR CE,,简称SQLCE。   

sqcg999的专栏 3132

VS,解决方案中,项目生成顺序,导致无法生成最终项目

我们开发的项目大概结构是这样: 其中标蓝的是最终生成的用户访问的web站点。 中间,我修改了一下项目的依赖关系 ,去掉了不必要的依赖,保持最基本的,基本没有依赖。 比如: star.model star.common star.configuration 都是独立的,没有任何项目依赖关系。 可是,不知为何,突然我生成star.MobileWeb,它是依赖于上面7个项目生成,总是出错,找不到程序...

weixin_44019016的博客 5206

ASP.NET MVC类库项目启用脚手架的GUID配置原理与实操

在ASP.NET MVC开发中,将Controllers或Models分离为独立类库是实现分层架构与团队协作的关键实践。然而,Visual Studio的脚手架功能(如Add Controller、Add View)并非基于引用或代码分析,而是依赖项目类型标识(ProjectTypeGuids)进行识别——这是一种底层项目系统机制。理解MVC版本对应的核心GUID(如MVC 3.0的{E53F8FEA-EAE0-44A6-8774-FFD645390401})及其与C#语言GUID的组合逻辑,是恢复功能的前

chuji3953的博客 365

vs编程c++创建项目顺序

使用步骤

dawnButterfly的博客 391

了解VS的自定义生成步骤和生成事件

以下内容来自docs.microsoft.com 地址:了解自定义生成步骤和生成事件 | Microsoft Docs 可通过三种基本方法从 Visual C++ 开发环境内自定义生成过程: 自定义生成步骤 自定义生成步骤是与项目关联的生成规则。 自定义生成步骤可指定要执行的命令行、任何其他输入或输出文件,以及要显示的消息。 有关详细信息,请参阅如何:向 MSBuild 项目添加自定义生成步骤。 自定义生成工具 自定义生成工具是与一个或多个文件关联的生成规则。 自定义生成步骤可将

shellching的专栏 2216

.NET6 WebApi第1讲:VSCode开发.NET项目、区别.NET5框架【两个框架启动流程详解】

运行应用程序。

weixin_54966200的博客 2043

VB.NET使用.Net5.0创建WebView2窗体应用程序

一、下载安装VS2019预览版(必须是最新预览版) Visual Studio Preview https://visualstudio.microsoft.com/zh-hans/vs/preview/ 二、下载安装.Net 5.0 SDK Download .NET 5.0 (Linux, macOS, and Windows) https://dotnet.microsoft.com/download/dotnet/5.0 三、下载安装Edge Beta(必须是Beta版本) Micro

wq1282的专栏 4354

别再为安装顺序头疼了!先装SQL Server 2012再装VS的保姆级避坑指南

本文详细解析了SQL Server 2012与Visual Studio的安装顺序问题,提供了从原理到实战的终极避坑指南。通过分析核心冲突点和最优安装流程,帮助开发者避免常见的依赖错误和组件冲突,确保开发环境稳定高效。特别适合需要安装sqlserver2012的.NET开发者参考。

weixin_30455023的博客 300

Windows2003环境下安装VS2008,.NetFramework3.5组件安装失败的解决

由于经历过不少挫折,所以安装之前,找了不少资料先参考一下。 之前安装VS2008,发现与Office2007冲突,在搜索了网络以后并请教一些朋友,发现其顺序是先VS2008然后Office2007,并且最好在vs2008之前安装SQL2005。 可是,在按照上述顺序安装仍然遇到了问题:.NetFramework3.5组件安装失败。 查看日志,是1603。在网络上找了不少资料,我自己是参照

u013046841的专栏 789

基于VS.NET的自定项目模板研

  引言  在实际开发中,软件企业往往希望尽量重用已经积累的成熟技术,并集成到开发人员的工具中。VS.NET中提供了不少向导模板类,但如果想建立自定义的向导模板,以往需要编写大量代码,通过创建IDTWizard应用程序的方法来实现。实际上,在VS.NET中直接修改、替换模板文件便可以轻松解决这个问题。以下解释了该方法的使用原理,并给出了一个具体的例子。  原理  VS.NET向导模板类主要分项目

Ar7的专栏 1415

基于VS.NET的自定项目模板研究

 1 引言  在实际开发中,软件企业往往希望尽量重用已经积累的成熟技术,并集成到开发人员的工具中。VS.NET中提供了不少向导模板类,但如果想建立自定义的向导模板,以往需要编写大量代码,通过创建IDTWizard应用程序的方法来实现。实际上,在VS.NET中直接修改、替换模板文件便可以轻松解决这个问题。以下解释了该方法的使用原理,并给出了一个具体的例子。  2 原理  VS.NET向导模板类主要分

zhaobmox的专栏 1434

生成项目的概念

读别人的代码,我在一个类的无参公共构造函数里加了个MessageBox,但单步跟踪到这个构造函数的候,并未执行MessageBox这句话就跳过去了,这让我好生奇怪:它有什么理由不执行呢?研究半天后恍然大悟:这是一个类库项目,而修改后我并未重新生成此类库——脑子暂短路的结果。 但在意识到脑子短路之前,我却考虑了很多:此类继承自另一个类,难道是继承上出了问题?不厌其烦的我甚至启动Snippet

lien0906的专栏 641

VS.NET2005 WebService调试何去何从

重装操作系统之后,用VS.NET2005新建一个Web Service后习惯性的(CTRL+F5)就开始运行了,却出现无法访问、无法调试的问题,总是出现如下错误:“/TemperatureWebService”应用程序中的服务器错误。--------------------------------------------------------------------------------

卖女孩的小火柴 1811

VS Code高效开发.NET项目:Solution Explorer与Test Explorer插件配置与实战

在软件开发中,集成开发环境(IDE)的扩展插件是提升开发效率的关键工具。其原理是通过扩展API为编辑器增加项目管理、测试运行等专用功能模块,从而将重型IDE的成熟工作流引入轻量级编辑器。对于.NETC#开发者而言,这尤其具有技术价值,它使得在跨平台的VS Code中也能获得类似Visual Studio的解决方案管理与测试执行体验,有效支持多项目解决方案的清晰组织和单元测试的高效运行。在实际应用场景中,开发者常面临项目结构复杂导致文件导航困难、测试执行繁琐易漏等问题。通过配置Solution Explor

weixin_34321753的博客 528

[转]基于VS.NET的自定项目模板研究

  引言  在实际开发中,软件企业往往希望尽量重用已经积累的成熟技术,并集成到开发人员的工具中。VS.NET中提供了不少向导模板类,但如果想建立自定义的向导模板,以往需要编写大量代码,通过创建IDTWizard应用程序的方法来实现。实际上,在VS.NET中直接修改、替换模板文件便可以轻松解决这个问题。以下解释了该方法的使用原理,并给出了一个具体的例子。  原理  VS.NET向导模板类主要分项目...

weixin_30760895的博客 108

VS2008到VS2019:ArcEngine项目升级实战与避坑指南

本文详细介绍了从VS2008升级到VS2019的ArcEngine项目实战经验与避坑指南。涵盖升级前的准备工作项目文件升级、关键配置调整、常见问题排查及进阶优化建议,帮助开发者顺利完成ArcGIS项目迁移,提升开发效率与系统性能。

weixin_33695450的博客 215
上一篇: 关于无法执行添加/移除操作
下一篇: Visual Studio 2005.NET中的CLR编程和MFC编程有什么区别?
nkcskr
博客等级 码龄19年 7粉丝 16原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值