❶ 請問初學C#,用什麼編譯器比較好
如果不用visual c# 2005。就用記事本好了。
基礎是靠自己練習的,並不是用哪個編程軟體就有好基礎。
要想學習好編成的人1年最少要寫10000行程序。
如果你寫的少,基礎不會好。
就算你用vs,一年寫1萬多行程序,基礎也會很好。
❷ VS2005 debug編譯和msbuild編譯 有什麼區別
用aspnet_compiler發布網站在asp.net 2.0模型中,vs2005已經完全脫離了編譯而成為了一個徹底的ide.算是一個不小的改動。其中更是取消了有關Web Application的概念,使得習慣了vs2003的人剛開始的時候會有一些摸不著頭腦。下面簡單說一下我在使用過程中自己總結的,算是一點經驗。
新建web工程並且位置是文件系統的時候,vs2005隻是幫你建好了一個sln文件,這個東西只是指引msbuild 如何進行編譯的,過程是:ide 調用 msbuild ,msbuild解析sln文件,msbuild調用aspnet_compiler.exe進行網站的編譯。所以aspnet_compiler.exe只是負責進行網站的編譯的。
預編譯的概念在 .netframework 1.1 裡面就存在了,vs2003中的預編譯指的是將頁面對應的cs/vb文件與resx文件編譯後統一集成到一個dll中放到bin目錄下,將aspx文件直接拷貝過去。這樣做會留下隱患,因為aspx文件就直接暴露在最後的發行包中,如果完全是codeb-behind模型還好,只能改改界面,如果採用了頁面上的來生成頁面,源代碼就暴露了。針對這些問題,vs2005採用了一種新的模式。
請參看ASP.NET 編譯工具 (Aspnet_compiler.exe) 這篇文章了解對各種文件的處理方式。
IDE發布:
vs2005中選擇 生成-〉發布網站,在對話框中的操作將映射到aspnet_compiler.exe的參數中,可更新的發布對應 -u,其他選項類似,請參考上面的文章了解。
注意:發布時將忽略web.config中的debug參數,統一生成無調試信息的文件。
手工編譯:
簡單說來,如果是無更新發布模式編譯,appcode下面的class編譯成dll放在bin下,頁面內容清空位置不變作佔位用,同時頁面被編譯成一個隨機名稱的dll,增加一個同名.compiled文件到bin目錄下,內容大概如下:
<?xml version="1.0" encoding="utf-8"?>
<preserve resultType="3" virtualPath="/Forum/AdminList.aspx" hash="6772609c3" filehash="49154463f1d6738c" flags="110000" assembly="App_Web_hmrycg3w" type="ASP.forum_adminlist_aspx">
<filedeps>
<filedep name="/Controls/footer.ascx" />
<filedep name="/Controls/header.ascx" />
<filedep name="/Forum/AdminList.aspx" />
<filedep name="/Forum/AdminList.aspx.cs" />
<filedep name="/Forum/menu.ascx" />
<filedep name="/Forum/menu.ascx.cs" />
</filedeps>
</preserve>
裡面只是列出了頁面上的customcontrol,這里已經完成了和masterfile的映射。這樣最大限度的保護了頁面的敏感信息,發布過的網站中只能看見一堆文件名了。可更新的發布模式與vs2003類似,頁面就直接拷貝過來不予編譯了。
講了一堆原理,下面說一下aspnet_compiler.exe的調用方法,這是我使用的例子
我的開發目錄是這樣的
Project/
library/
devroot/
pubroot/
proj.sln
使用的命令如下:
aspnet_compiler -v / -p .\devroot -f .\pubroot
分析:
-v / 指明了iis的虛擬目錄
-p .\devroot 表示代碼實際位置
.\pubroot 指明了要發布的位置
-f 表示強制改寫目標位置
你還可以用-u來進行傳統意義上的預編譯,-d來插入編譯符號。
總的來說,aspnet_compile結合msbuild,提供了一個很好的自動化編譯環境,值得研究研究:)
❸ 請問下,vb6.0和vb2005那個好
各有各的好處:
VB6.0使用方便,編譯出來的程序可以直接運行。
vb2003、vb2005、vb2008、vb2010 編譯出來的程序需要 framework 的支持,也就是說,在VISTA、WIN7、以及安裝了framework的XP、2003等操作系統上都能運行,這個是運行環境的區別。
其次,VB200X 系列的版本,在操作上、開發效率上、資料庫支持上都比VB6.0快的多,舉個例子,同樣是修改程序窗體的透明度,VB6.0還要引用 win32API,
VB200X 系列的版本就不用了,直接調用form1.Opacity就可以了,在資料庫方面,VB200X 系列基本上拖拽就可以實現各種資料庫的操作,方便至極(當然,VB6也可以寫出來,但是沒有那麼方便)
再比如界面方面,VB200X的界面也比6.0的好看的多……
PS:如果想做個好的程序員,VB6.0一定要學好,其他版本的要會用,技術好了,那種程序語言都好用!
學習是學習編程思想,不是看哪門語言好用,當整個過程清楚了,原理掌握了,再工具不同的環境,選擇不同的語言,才是正確的!
❹ vc 6.0 visual stdio 2005學哪個好呢
VC6.0適合初學者用 如果你剛開始學C/C++ 對面向對象的概念不大熟悉 可以用6.0來了解 但到後面關於面向對象程序開發 6.0就顯的力不從心了 6.0里開發的是MFC 比較艱澀難懂 而且現在很多學校已經不學MFC了 而vc2005不管從集成開發環境,還是類庫 都是先進了許多 2005里的面向對象編程相對容易學 功能強大 如果你對類繼承封裝有良好的認識 那就2005吧
至於2008 與2005隻是新舊問題 不過2005更穩定 許多的企業和高校任然用的2005 畢竟教科書都是按2005編的嘛
❺ 如何使用delphi 編譯rtklib
1. 首先在vs2013中新建一個win32的dll項目
2. 在項目上添加一個文件夾[rtklibsrc]然後在文件夾上【添加現有項目】把rtklib的源文件加入工程。在rtklibsrc下建立rcv把rcv下面的文件也添加到工程
3. 現在開始編譯工程,你會發現很多錯誤。下面我們一步步來解決錯誤。
1> Q: error C1853:
「Debug\rtklibHelper.pch」預編譯頭文件來自編譯器的早期版本,或者預編譯頭為 C++ 而在 C 中使用它(或相反)
x:\xxxx\rtklibhelper\rtklibsrc\tle.c 1 1 rtklibHelper
A: 不使用預編譯頭
2> Q: 錯誤 1 error C4996: 'strncpy': This function or
variable may be unsafe. Consider using strncpy_s instead. To disable
deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for
details. x:\xxxx\rtklibhelper\rtklibhelper\rtklibsrc\tle.c
A: 其實提示上面已經告訴你方法了,需要你加入預編譯指令來取消這個錯誤[_CRT_SECURE_NO_WARNINGS]
3> Q: error C4996: 'gethostbyname': Use getaddrinfo() or
GetAddrInfoW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to
disable deprecated API warnings
x:\xxxx\rtklibhelper\rtklibsrc\stream.c
A: 這個錯誤和上面類似,加入[_WINSOCK_DEPRECATED_NO_WARNINGS ]
4> Q:接下來是一個這樣的錯誤 error C2466: 不能分配常量大小為 0 的數組 x:\xxxx\rtklibhelper\rtklibsrc\rinex.c
A:這個錯誤我們來看一下, 在[MAXPRNGLO]上面按F12,看他的定義處
這個常量為0,那麼不能進行編譯,我們想上面一樣在預編譯器裡面加入 ENAGLO
5> Q: error C1083: 無法打開包括文件: 「rtklib.h」: No such file or
directory x:\xxxx\rtklibhelper\rtklibsrc\rcv\ublox.c 41 1
rtklibHelper
A: 添加附加目錄設置[.\rtklibsrc] , 注意是C/C++的常規下面,不是鏈接器的常規頁面。
6> Q: error LNK2005: _input_oem3 已經在 novatel.obj 中定義 x:\xxxx\rtklibhelper\novatel_old.obj rtklibHelper
A: 這個錯誤是添加文件的時候添加重復了novatel_old.c不應該添加了,刪除即可
7>: Q: error LNK2019: 無法解析的外部符號 _settspan,該符號在函數 _postpos 中被引用 x:\xxxx\rtklibhelper\postpos.obj rtklibHelper
error LNK2019: 無法解析的外部符號 __imp__timeGetTime@0,該符號在函數
_tickget 中被引用 x:\xxxx\rtklibhelper\rtkcmn.obj rtklibHelper
error LNK2019: 無法解析的外部符號 __imp__accept@12,該符號在函數
_accept_nb 中被引用 x:\xxxx\rtklibhelper\stream.obj rtklibHelper
A: 添加附加庫[連接器->輸入->附加依賴庫]添加winmm.lib, ws2_32.lib
8>:Q: error LNK2019: 無法解析的外部符號 _showmsg,該符號在函數 _convrnx 中被引用 x:\xxxx\rtklibhelper\convrnx.obj rtklibHelper
A: 一查showmsg這個函數如果在DLL中需要自己定義,rtklib裡面已經做好了處理需要在預處理器裡面加入[DLL]即可。
預處理器裡面我們添加了
_CRT_SECURE_NO_WARNINGS
_WINSOCK_DEPRECATED_NO_WARNINGS
ENAGLO
DLL
最後rtklibHelper編譯成功了,可以開始編寫具體的功能函數了。