【100分!】VS C#中 解决方案资源管理器下的一个项目是否就代表一个程序集

【100分!】VS C#中 解决方案资源管理器下的一个项目是否就代表一个程序集,第1张

1程序集和项目的关系,程序集,就是把CS文件编译后生成的存放CLR能识别的MSIL语言(微软中间语言)的一个文件(如一个DLL文件或者一个exe文件都叫一个程序集)。一个项目可以编译到一个程序集,也可以把多个项目编译到一个程序集里面,还可以把一个项目编译到多个程序集里。

2Bin(Binary,二进制的),obj(object,对象,目标码)Debug(调试)Release(发行)。根据字面意思也差不多知道它们各是干什么的了吧?

Bin文件夹,用于存放编译后生成的二进制文件。其下根据文件的不同用途,又建立了Debug和Release两个文件夹,分别存放用于调试和用于最终发布的文件。

obj文件夹,存放每个模块的编译结果。为了效率,NET默认采用增量编译,即每次只重新编译改动过的模块,这样就有必要把每个模块的编译结果分别存放。

3第1点已经说过,一个项目可以编译到多个程序集(技术可行,只是一般没那个必要),也说过一个DLL文件就是一个程序集。所以一个项目当然可以生成多个DLL文件。

同一个项目下可以有多个不同的命名空间。

4项目、解决方案、命名空间都是查询开发时的逻辑分类,和文件(物理概念)的多少没有必然联系。程序集是物理存放机制。

解决方案的概念要比项目大。所以你在Visual Studio的“解决方案管理器”里总是看到的项目位于解决方案的目录之下。而没有见过一个解决方案位于项目之下的。综上所述,一个解决方案里可以包含多个项目。项目包含不了解决方案。

一个项目可以有多个命名空间,多个项目也可以共用一个命名空间。

希望能帮上你。若有异议盼指教

1VBnet是微软最新平台技术,是net framework SDK的一种语言。VBnet和VC#net在功能上没有区别。编译以后生成的可执行文件被称为Assembly,即程序集。

VBnet的版本号是Visual Basic 70,它的运行是建立在CLR(Common Language Runtime)和MSIL(Microsoft Intermediate Language)虚拟器上的。其实,它的机制和Java差不多。

VC++是微软公司开发的一个IDE(集成开发环境),换句话说,就是使用c++的一个开发平台有些软件就是这个编出来的另外还有VB,VF只是使用不同语言

2vc++是Windows平台上的C++编程环境,学习VC要了解很多Windows平台的特性并且还要掌握MFC、ATL、COM等的知识,难度比较大。Windows下编程需要了解Windows的消息机制以及回调(callback)函数的原理;MFC是Win32API的包装类,需要理解文档视图类的结构,窗口类的结构,消息流向等等;COM是代码共享的二进制标准,需要掌握其基本原理等等。

VC作为一个主流的开发平台一直深受编程爱好者的喜爱,但是很多人却对它的入门感到难于上青天,究其原因主要是大家对他错误的认识造成的,严格的来说VC++不是门语言,虽然它和C++之间有密切的关系,如果形象点比喻的话,可以C++看作为一种”工业标准”,而VC++则是某种 *** 作系统平台下的”厂商标准”,而”厂商标准”是在遵循”工业标准”的前提下扩展而来的。

VC++应用程序的开发主要有两种模式,一种是WIN API方式,另一种则是MFC方式,传统的WIN API开发方式比较繁琐,而MFC则是对WIN API再次封装,所以MFC相对于WIN API开发更具备效率优势,但为了对WINDOWS开发有一个较为全面细致的认识,笔者在这里还是以讲解WIN API的相关内容为主线。

话说到这里可能更多人关心的是学习VC++需要具备什么条件,为什么对于这扇门屡攻不破呢?

要想学习好VC必须具备良好的C/C++的基础,必要的英语阅读能力也是必不可少的,因为大量的技术文档多以英文形式发布。

3net是微软推出的一个平台,微软称它为:XML Web 服务平台。它不是一种语言,C#是一种语言,在net里面还有很多,像VBnet,C++net,J++net等,据说net是微软的一个网络战略。

软件开发需要的工具和知识很杂,一般情况下包括:

工具:

你需要一个集成开发环境,主流的是VisualStudio。

“集成”的意思是,它是很多工具的集合,主要包括:

源代码编辑:你也可以用VIM,但是这个在Windows开发中非主流,用户多为从Linux过来的。

代码编译器:把源代码编译成可执行文件的工具,这其实也是一套工具,有编译代码的(如编译C#的csc),有编译资源的,有控制编译流程的工具(msbuild),有代码自动生成工具,有对程序集进行签名的工具。有兴趣可以看看WindowsSDK。

代码测试工具:有知名的NUnit,其实VisualStudio也自带一套,而且比Nunit强很多,对UI测试有十分良好的支持。比如UI录制 *** 作,用于回放测试。

源代码管理工具:VisaulStudio也有服务器端产品,叫TeamFoundationServer,其中便有源代码管理的功能。当然,VisualStudio也可以与Git,Perforce,SVN等其它源代码管理工具集成。

Profiling工具:对代码的运行进行动态分析,通过HotPath分析性能瓶颈。

需求与变更管理工具:管理你软件上的Bug以用户提出的(哪怕是你自己想的)需求。有很多的开源替代品,但是VisualStudioTeamFoundationServer有提供这个功能。

UI与UX设计工具:界面设计分原型设计(mockup)与界面开发。原型设计常用balsamiq。界面开发根据你使用的技术有所不同。如果使用MFC或是WinForm,基本上只能找专门美工画图。而简单地应用皮肤库,除了让你的界面眼花缭乱外,在UX上没有实质性的助益。如果使用WPF,微软有ExpressionBlend和ExpressionDesign负责UX和与UI,是介于开发和美工中间的一类角色。

除了VS外,如果是多人开发一般还会需要搭建:

持续集成环境,常见的工具是TeamCity或是

p>。

沟通平台,常见的是用Email和各种IM,还可以用Wiki或是SharePoint保存每个人的知识和分享。如果时髦些,可以搭一个Jive。

知识方面(假设已经是一个程序员):

开发一个软件,比如QQ之前,你应该有一定的软件开发基础,但是并不需要先把所有需要的技术了解的一清二楚,没有那个时间,也没有意义。就算你知道你要做的东西需要算法知识,你需要把《算法导论》先拿来看一遍吗?开发软件最重要的,是对每个功能问出下面的问题:

要做什么?做成什么样?要达到怎么的效果?

要做到这些,存在哪些没有解决的问题?

有哪些

现有的技术

可以用来解决这个问题?

如何验证结果?

然后才是去了解那些需要用的技术去解决你的问题。

至于具体的知识

上面列出的工具要会用吧。

熟悉开发流程。这非常重要,比如Commit代码的流程,发布新版本的流程,什么时候做Branch。这些

不一定要正经地文档化,但是一定要在团队内部达成共识

,否则开发过程就是一片混乱。(人有可能觉得这和问题没直接关系,但是要知道现在的软件开发基本没有一个人进行的,一个人的叫玩玩,爱怎么搞怎么搞。)

软件销售。这决定了你的软件

1是否需要数字版权保护机制

2是否需要接入支付体系

软件运营。这决定了你的软件

1是否需要技术支持?通过什么途径提供技术支持?

2是否需要收集用户信息?收集什么信息?实名还是匿名?

3是否使用第三方服务来降低运营和维护成本?(自己Host还是租?要不要使用GAE构建服务器端?)

当地法律。根据当地法律,你的软件,可能会被要求具有下列功能中的一部分:

1用户信息保护2敏感内容过滤3审查。(谁在用,用了哪些功能)有人可能觉会得上面这些点太大太泛,但这些的确是开发一款软件要考虑的事情,而且是一开始就要考虑的事情。没太明白题主具体到“Windows”的目的是什么。上面这些,无论是什么平台上的软件,都存在这些问题。Windows之于Linux或是Mac的不同,也就是使用的技术框架上有些差异,这些而差异对于程序员而言不应该是什么问题。因为原理都是一样的,一样的算法,一样的TCP链接传数据,一样的数据加密,甚至可以做出一样的界面统一用户体验。(当然你也可以做得完全不一样。)

命名空间是类型的一种逻辑命名方案,其中简单类型名称(如 MyType)前面带有用点分隔的层次结构名称。这样的命名方案完全在开发人员的控制之下。例如,键入 MyCompanyFileAccessA 和 MyCompanyFileAccessB 在逻辑上将会具有与文件访问相关的功能。NET 框架使用一种层次结构命名方案,用于将类型按相关功能的逻辑类别进行分组,例如,ASPNET 应用程序框架或远程处理功能。设计工具可以利用名称空间使开发人员更容易在代码中浏览和引用类型。名称空间的概念与程序集的概念之间没有任何联系。一个程序集可以包含其层次结构名称具有不同名称空间根的类型,而一个逻辑名称空间根可以跨越多个程序集。在 NET 框架中,名称空间是在设计时进行逻辑命名的便捷方式,而程序集在运行时为类型建立名称作用域。MSDN上一个网友给的解释 >

NET程序集版本冲突?这问题怎么描述的?

net不会出现版本冲突问题的,往往版本冲突指的是你开发软件时引用与使用不同的版本所导致的。net版本的引用依赖的并不是版本号,而是publicToken做为依据的。所以多数时间会出现版本找不到的现象。或者引用了两个不同版本的net程序集(两个publictoken),即使是这样,那么你开发时编译器是无法通过的,因为编译时根本不知道某个方法到底来源于哪个程序集。出现编译问题时,往往是因为使用了Fake引用,然后,由于更新问题(发布时为使用的版本与开发时使用的版本不同),这时可能会现一些错误的问题。并不会出现版本冲突问题。

所以我无法确定你所谓的版本冲突到底是什么现象,一般在开发活动与部署活动中都不会出现直接的版本冲突提示的。所谓的版本冲突,应该不是程序报错而你自己的理解吧?否则直接把问描述的更清晰些,不要自己给问题定义一些不规则的描述——至少我不觉得你真的遇到了版本冲突的问题。

大前提——net各版本是可以共存的!MS对其版本控制的机制还是非常信任的。net开发版本完全共存,而运行版本基本上更不会出现这种情况,本身各运行版本可以共存,而且开发版本与运行版本是不一致的。

比如,net 35是开发版本,但不管你是用net 20还是35,其运行版本都是net 2049XX版本,当然了,net 40/45X/46X/47X生成的程序,其运行版本都是40。所以基本上不会遇到版本冲突。

创建自定义程序集

若要创建自定义程序集,请执行以下步骤︰

创建 Visual Studio 的类库。在文件菜单上,指向新建、 指向项目,然后单击类库。

指定的名称和位置。例如,我使用了 SimpleClassLibrary 和 C:\Documents 以及 Settings\user1\My Documents\Visual Studio 2005\projects。

打开类文件 (在本例中,Class1vb),然后再创建您想要在报表服务中使用的函数。我的情况而言,我只是创建一个简单的共享的函数。

注意:因为这是一个共享的函数 (在 C# 静态),我们不需要通过使用实例化的对象来访问它。这起我们是如何引用在本文的后面我们程序集,请记住这一点。

Public Class Class1

Public Shared Function DoSomething() As String

Return "string data returned from custom assembly"

End Function

End Class

一旦您添加完所有代码,单击生成菜单生成 SimpleClassLibrary 。此步骤创建各自的 bin 文件夹中的程序集或托管的dll。在我的示例中,此步骤创建我的程序集,SimpleClassLibrarydll,我 Documents\Visual Studio 2005\Projects\ SimpleClassLibrary\bin\Debug 文件夹中。

将自定义程序集复制到 SQL 报表服务文件夹

使您的程序集可供报表设计器和报表在报表服务的服务器。若要执行此 *** 作,必须将dll 复制到报表设计器文件夹和报表服务器文件夹。

注意:该路径可能是有点不同,这取决于您的安装路径。

报告服务 2005 年将dll 文件复制到以下文件夹︰

编写该 Visual Studio 8\Common7\IDE\PrivateAssemblies

计划该 SQL Server\MSSQL3\Reporting Services\ReportServer\bin

对于报告服务 2000,将dll 文件复制到以下文件夹︰

计划该 SQL Server\80\Tools\Report 设计器

计划该 SQL Server\MSSQL\Reporting Services\ReportServer\bin

注意:由于您所要做的每次更改的代码时,它可能有点乏味。许多开发人员创建批处理文件来处理此任务。下面是可以使用的示例批处理文件。

@ECHO OFF

REM Name: SRSDeploybat

REM

REM This batch files copies my custom assembly to my Reporting Services folders

REM Run this from the directory where the customer assembly was compiled

REM Be sure to close any applications that have your custom assembly open

REM

REM This is the SQL Server 2005 version:

copy SimpleClassLibrarydll "C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies"

copy SimpleClassLibrarydll "C:\Program Files\Microsoft SQL Server\MSSQL3\Reporting Services\ReportServer\bin"

REM This is the SQL Server 2000 version:

REM copy SimpleClassLibrarydll "C:\Program Files\Microsoft SQL Server\80\Tools\Report Designer"

REM copy SimpleClassLibrarydll "C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\bin"

我通常通过在项目中创建自定义生成后事件处理此任务。为此,转到您的项目的属性。接下来,单击编译选项卡,然后单击生成事件。这将打开生成事件对话框。选择生成后事件命令行,然后再键入以下命令︰

复制"$(目标路径)""C:\Program 数值 Visual Studio 8\Common7\IDE\PrivateAssemblies\"

复制"$(目标路径)""C:\Program 该 SQL Server\MSSQL3\Reporting Services\ReportServer\bin\"

这可以使用后期生成宏来指定我的程序集的位置。创建生成后事件的详细信息,请访问下面的 Microsoft 开发人员网络 (MSDN) Web 站点︰

>

以上就是关于【100分!】VS C#中 解决方案资源管理器下的一个项目是否就代表一个程序集全部的内容,包括:【100分!】VS C#中 解决方案资源管理器下的一个项目是否就代表一个程序集、什么是VB.NET和VC++;C#与.NET有什么联系、编程需要什么工具等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9670682.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存