code-prettify

顯示具有 Visual Studio 標籤的文章。 顯示所有文章
顯示具有 Visual Studio 標籤的文章。 顯示所有文章

2016年10月15日 星期六

gitignore 範本及多個 gitignore 檔案實踐方法

Git 用了一段時間,常常遇到要調整 .gitignore 忽略自動產生的檔案,
當專案多了之後就會覺得不知道有沒有什麼範本可以使用,
馬上發現 GitHub 有個 gitignore 專案專門收集各種 .gitignore 範本。
https://github.com/github/gitignore

接下來想到的問題是,雖然一開始可以用範本,但是之後修修改改又不一致了?
有沒有什麼好的方法呢?直覺是能不能分開成多個 gitignore 檔案呢,
可惜,Git 不支援也不建議。
還好在 StackOverFlow 有網友提出合併檔案的方法,這樣就可以實踐了!

在 git 根目錄下建立一個 gitignore 目錄,然後將範本放進去,像是 VisualStudio.gitignore、C++.gitignore、Qt.gitignore
接著將專案的設定放在 Project.gitignore,最後用一個批次檔來產生 .gitignore。

cat Project.gitignore VisualStudio.gitignore C++.gitignore Qt.gitignore > ../.gitignore

這麼一來 gitignore 既方便使用也好維護 !



資料來源:
gitignore - A collection of useful .gitignore templates
https://github.com/github/gitignore

Best practice for using multiple .gitignore files
http://stackoverflow.com/questions/10274424/best-practice-for-using-multiple-gitignore-files

2015年4月29日 星期三

Visual Studio Qt IntelliSense: 無法開啟來源檔案 "initializer_list"

Visual Studio Qt IntelliSense: 無法開啟來源檔案 "initializer_list"

完整的訊息如下:
IntelliSense: 無法開啟來源檔案 "initializer_list"
IntelliSense:  內嵌規範只能用於函式宣告
IntelliSense:  namespace "std" 沒有成員 "initializer_list"
IntelliSense:  必須是 ')'
IntelliSense:  必須是 ';'
IntelliSense:  class "QStringList" 沒有成員 "sort"

一開始因為有些專案會出現,有些不會,所以沒有發現原因,
後來發現原因是 Visual Studio 2013 指定平台工具組為 Visual Studio 2012,
也就是使用 VS 2013 為 IDE,但是 compiler toolchain 使用 VS 2012 進行編譯。

一些程式的寫法是用 Visual Studio 的版本來判斷是否支援某些寫法,像是 C++11 之類的,
這時候因為使用的 IDE 版本跟編譯器不一致,導致 VS 的 IntelliSense 誤判。

目前的解決方法是強制設定這些專案的 VS 版本為 2012,
在專案屬性宣告 _MSC_FULL_VER=170061030 即可。

2015年3月20日 星期五

error C2977: 'std::tuple' : too many template arguments

最近遇到「error C2977: 'std::tuple' : 樣板 引數太多 」的問題,
上網查詢之後發現是 Visual Studio 2012 不支援 variadic templates,
解決方案是在前置處理器定義加上 _VARIADIC_MAX 10
註:Visual Studio 2013 已支援


參考資料:
C2977: 'std::tuple' : too many template arguments (MSVC11)
http://stackoverflow.com/questions/8274588/c2977-stdtuple-too-many-template-arguments-msvc11

2014年9月7日 星期日

Visual Studio 2013 IIS Express remote access (遠端存取)

在使用 Visual Studio 開發 Web 專案時,因為客戶使用 iPad Mini 為操作界面,
雖然 Chrome 擁有 Device Mode & Mobile Emulation 功能,可以滿足大部份的視覺模擬。
但是在一些細微的視覺差異以及在硬體上,還是只能在實體機上面呈現。

然而,預設 Visual Studio Web 專案啟動時,使用的 IIS Express 是只能本地存取的 (localhost access only),所以我們只能一再的將修正後的程式部署到開發環境中的 IIS Server,在 iPad 上確認是否符合預期,如果不是則再重覆上面的動作,實在是很累人。

所以,決定上網尋找一下,能不能讓 Visual Studio 2013 IIS Express 支援遠端存取 (Remote Access),答案是可以!下面是修改步驟。

專案 > 屬性 > Web 頁面中,有個 專案 URL,原本是 localhost:54926 (54926 是隨機 port 號),改為 127.0.0.123:54926 ( 127.0.0.123 是電腦的 IP,或是 domain 也行)。

如果改完之後直接啟動,會出現

Bad Request - Invalid Hostname / HTTP Error 400. The request hostname is invalid.

這是正常的,還需要修改 IIS Express  設定,開啟這個檔案

%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config

找到像這樣的設定:

<site name="WebSiteTest" id="1" serverAutoStart="true">
    <application path="/">
        <virtualDirectory path="/" physicalPath="E:\Project\WebSiteTest" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:54926:localhost" />
    </bindings>
</site>

將上述中的 bindingInformation="*:54926:localhost" 改為 bindingInformation="*:54926:127.0.0.123"

重新啟動後,就可以看到網站,這時候就可以遠端存取了!

Reference
Connecting to Visual Studio debugging IIS Express server over the lan

Using Custom Domains With IIS Express

Allowing remote access to your IIS Express service