一、首先,你需要在“码云”上有个账户:
创建账户即可
二、新建一个项目:
对项目进行设置:
记住项目路径,记住项目路径,记住项目路径
项目创建完毕,暂时可以先不管它。
三、我们来打开vs,在解决方案上点击右键,选择“将解决方案添加到源代码管理”,然后选择“Git”
四、在“视图”中打开“团队资源管理器”,点击设置
填写用户名(随便定一个就行,这个就是在云端管理时起可以明确哪些代码是被哪个账户更改上传的作用),邮箱,以及本地存储路径
五、提交代码,点击“提交”或是“未同步提交”
设置云托管路径,就是在第二条中记录的路径
这时点击发布,会出现以下问题:
解决方法是换个分支:
六:新增分支:
默认的分支为master,细心的同学想必也发现了码云上的默认分支也是这个名字,所以这就是冲突的来源了,既然如此,我们新建一个分支,然后把项目发布到这个分支上,问题自然就解决了。
在刚才出错的页面,点击"master"的下拉箭头,选择新建分支
创建完成后在分支名称上点击右键发布:
再次点击“未同步提交”或是“提交”,再点击“同步”,将项目发布到新建分支上
如此,便可在码云上查看我们上传的代码:
若是后来更改了代码,只需在解决方案上右键点击“提交”即可提交修改,此时需要写上版本备注,以便日后对比不同版本之间代码以及管理
这个要和net的资源自动回收管理联系起来说,托管代码是可以被系统自动回收的,所以它是安全的;非托管代码系统不能自动回收,需要你自己销毁,过多的使用而不去销毁会使程序溢出,所以它是相对不安全的
托管的意思就是你的代码不是直接使用计算机的资源而是使用运行时给你分配的资源。换句话说就是托管程序不能跨过运行时去读写其他的内存或硬件资源。托管代码比本地代码更好控制,极大的减少了因为程序自身访问内存引发的内存地址冲突,硬件资源冲突等风险,降低开发难度,提高软件质量。
IL,动态编译并不是托管的特性,而是net的特性。
一、绪论
当微软推出VSnet7实现了可扩展的托管C++后,C++程序员们反映不一。尽管大部分的程序员对于能够继续使用C++感到很欣慰,但几乎所有的人对于托管C++提供的晦涩语法感到很痛苦。微软明显从反馈中感觉到托管C++不是那么成功。
2003年10月6日,ECMA(欧洲计算机制造商协会)宣布成立专家组,负责结合ISO标准C++与通用语言,开发一个可扩展语言的标准,这个新的可扩展语言被称为C++/CLI标准。这个标准将被VSnet2005的C++编译器支持。
二、老语法存在的问题
1、晦涩繁琐的语法和文法--这两个"双重底线"问题加重了阅读的负担。
2、二流的CLI支持--相对与C#与VBNET,MC++使用不方便的工作区来提供CLI支持,例如,它没有一个一一对应的结构来列举NET的集合。
3、C++与NET粗陋地结合--对于CLI类型,你不能使用C++的特色,例如模板;同样,对于C++类型,你不能使用CLI的特色,例如碎片帐集。
4、令人混淆的指针--非托管的C++的指针及托管的引用指针都使用语法,这非常令人混淆,因为-gc指针与托管指针在本质和行为上完全不同。
5、MFC编译器不能产生可校验的代码。
三、C++/CLI给我们提供了什么?
1、优雅流畅的语法和文法--C++/CLI为C++开发人员书写托管代码提供了一种非常自然的感觉,并且它提供了非托管代码到托管代码的平滑过度。以前所谓的"双重底线"问题现在已经荡然无存。
2、一流的CLI支持--CLI特色,例如属性、碎片集合和属类得到了直接支持,此外,C++/CLI还准许将这些特色用于本地非托管的类。
3、一流的C++类支持--C++特色,例如模板和析构函数对于拖管和非拖管类继续有效。实际上,C++/CLI是你可以"表面上"在栈或C++本地堆上声明一个NET类型的NET语言。
4、在NET与C++之间的沟壑上架起了一座桥梁--C++开发人员在抨击BCL时不再象离开水的鱼。
5、C++/CLI编译器产生的可执行文件完全是可校验的。
四、"Hello World"小程序
using namespace System;
void _tmain()
{
Console::WriteLine("Hello World");
}
上述代码除了不需要引用mscorlibdll库外,与老的语法没有太大的区别,因为无论你什么时候使用/clr进行我,编译器都可以暗中进行引用(现在默认的是/clr:newSyntax)。
五、句柄
与老的语法主要的混淆是我们习惯于使用符号来声明拖管引用或非拖管指针,在C++/CLI里微软引入了句柄的概念。
void _tmain()
{
//The ^ punctuator represents a handle
String^ str = "Hello World";
Console::WriteLine(str);
}
^符号代表一个托管对象(声明时看上去象个帽子),按照CLI的规定,句柄代表一个拖管对象的引用。句柄在CLI中是新的语法,相当于C++中的-gc指针。句柄与指针不再混淆,在本质上两者完全不同。
托管DLL,说白了,就是 完全由NET托管代码实现的DLL,完全依赖于 NET 平台的 CLR 运行。托管DLL,受NET CLR管控,支持内存自动回收等的,对于NET平台是安全DLL
非托管DLL,是指完全或者部分 不是用NET代码实现,不依赖于NET平台即可运行,例如 COM方式 的DLL,不支持自动回收内存,对于NET平台而言,也是非安全可控的。
1简单的说,就是代码被编译成MSIL后在net的Framework下运行,同操作系统底层的交互都交给framework去做。所谓非托管代码就是脱离了Framework的管制,直接同底层API打交道,自己管理自己的内存和安全机制等东西。而托管代码就不管这些,全都由Framework去完成
2“程序”一般都是在对操作系统进行直接或者间接的操作
“托管程序”是需要通过访问公共语言运行时(cls)才能访问操作系统的程序
而“非托管程序”不用通过访问公共语言运行时(cls)可以直接访问操作系统的程序
3vbnet,C#等写的程序是托管程序,VC++可以写托管程序,如果用到了内存管理,则只能编译为非托管程序这些东西MSDN上都写得很清楚的,如果真想深入了解的话LZ可以看看CLR via C#、net框架设计、Effective C#之类的书籍
欢迎分享,转载请注明来源:表白网
评论列表(0条)