在開發(fā).NET項目的時候,包括Winform項目和Web方面的項目过椎,編譯和部署的時候忆肾,都需要考慮到是32位的X86方式荸频,還是64位的方式,有時候還需要進行調(diào)試客冈,如果沒有合理設(shè)置好這些關(guān)系旭从,還可能出現(xiàn)無法調(diào)試的問題,本文基于我對Winform的開發(fā)總結(jié)场仲,介紹在.NET項目中對項目工程的設(shè)置操作和悦。
1、設(shè)置編譯平臺的屬性
一般情況下渠缕,我們?yōu)榱送瑫r兼容32位和64位操作系統(tǒng)鸽素,我們需要對設(shè)置好.NET項目的編譯屬性,一般設(shè)置為X86的方式亦鳞。在VS的IDE里面馍忽,選擇生成-》配置管理器菜單。
如我的混合框架的項目設(shè)置如下所示燕差,統(tǒng)一設(shè)置為了X86的兼容模式遭笋,請確保所有的項目均為X86的平臺設(shè)置。
2徒探、WCF服務(wù)或者Web項目的設(shè)置
項目設(shè)置了以上的編譯平臺屬性后瓦呼,一般情況下,WinForm程序或者類庫運行是沒什么問題了测暗,但是如果是項目里面有WCF服務(wù)或者Web項目的吵血,還需要注意一個設(shè)置,就是bin目錄的設(shè)置偷溺。默認如果你修改了X86的平臺設(shè)置屬性后,WCF服務(wù)或者Web項目的輸出目錄也會發(fā)生變化钱贯,一般情況下挫掏,會是bin\x86\Debug
這個時候這個項目也是能夠順利編譯的,一切似乎都顯得正常的秩命,但是我們在修改部分代碼尉共,并進行調(diào)試問題的時候褒傅,可能會出現(xiàn)源代碼和原始版本不同的情況。
如果這時候袄友,你根據(jù)這些去百度或者Google問題殿托,可能會給你找出很多不同的解決方案,但是可能都不太解決問題剧蚣,其實這個時候的問題處理很簡單支竹,就是把輸出目錄重新設(shè)置為Bin就可以了,編譯調(diào)試源碼也一致了鸠按。
3礼搁、Winform啟動項目的目標框架問題
在創(chuàng)建Winform啟動項目的時候,默認VS創(chuàng)建的Winform啟動項目目尖,它的目標框架總是Client Profile(不知基于什么考慮)馒吴,而一般情況,我們使用外部類庫比較少的時候瑟曲,或者調(diào)用的.NET自身的類庫比少的情況下饮戳,問題不會出現(xiàn),但是我們用這個項目開發(fā)了一段時間洞拨,逐漸加入一些模塊的時候扯罐,發(fā)現(xiàn)總是出現(xiàn)錯誤,或者會缺少某些命名空間扣甲,這個時候篮赢,我們就應(yīng)該要檢查一下是否是你的啟動項目的目標框架問題了,有可能是你的目標框架為Client Profile的模式琉挖,如下所示启泣。
如果我們把它修改為正常的.NET Framework框架方式,那么編譯就可能完全通過了示辈。
4寥茫、.NET安裝包的設(shè)置
為了方便客戶部署使用,我們很多時候矾麻,可能把程序做成一個安裝包的形式纱耻,這種模式也需要考慮32位和64位的差異,一般我們可以選擇X86的平臺兼容模式险耀,這種情況下弄喘,需要我們在安裝項目的屬性里面設(shè)置X86的平臺屬性,如下所示甩牺。
這樣我們生成的安裝包蘑志,就能成功部署在32位和64位的系統(tǒng)上運行了(他們都使用了32位的程序模式運行)。程序安裝后,我們可以看到它的目錄也是在X86的程序目錄下的急但。
我們制作安裝包澎媒,一般情況下,我們可能需要先創(chuàng)建一個空白的項目波桩,然后把相關(guān)的發(fā)布文件添加到項目中去戒努,這里面其實也有一些講究,一般情況下镐躲,我們先把主程序添加進去储玫,其他部分會根據(jù)引用關(guān)系自動添加了。如果你一股腦把編譯目錄里面的DLL都加入進去匀油,很多可能就會出現(xiàn)重復(fù)引用的情況缘缚。
因此避免以上的問題,一般先添加主程序的EXE文件敌蚜,然后等它的相關(guān)DLL都已經(jīng)自動引入了桥滨,最后檢查缺少那些DLL和一些文檔文件,然后再依次補充一些就可以了弛车。
安裝包除了上面情況需要注意外齐媒,還需要注意你的系統(tǒng)必備的設(shè)置
如果是.NET4的程序,我們一般勾選Microsoft .NET Framework4(X68和X64)這個必備組件(注意不是Client Profile)纷跛,這樣我們可以檢測用戶的系統(tǒng)是否安裝了必備的環(huán)境喻括,如果正常則可以成功運行起來了。
以上就是我在開發(fā)項目中贫奠,經(jīng)常用到的一些設(shè)置屬性唬血,雖然很多看似很普通,但是每次必須確保已經(jīng)成功設(shè)置好了唤崭,否則可能出現(xiàn)一些錯誤莫名其妙拷恨,會兜很多彎路。