Posts Tagged With: Visual Studio

[VS] Visual Studio 2019 @ Windows 2012 R2 無法正常安裝


昨天正常安裝 VS2019@Win10 x64 後,今天打算在 Win2012r2 上安裝。晚上選完安裝內容後,跑去睡覺,早上一看,發現卡在 Microsoft.Net.4.7.2.FullRedist 上:

VS2019 安裝失敗
VS2019 安裝失敗

點選「查看已驗證的解決方案」,沒啥有幫助的文章。

有其他人卡在 .Net framework 4.7.2 無法安裝
有其他人卡在 .Net framework 4.7.2 無法安裝

打開工作管理員,發現是執行下面執行檔失敗:

C:\ProgramData\Microsoft\VisualStudio\Packages\Microsoft.Net.4.7.2.FullRedist,version=4.7.3062.2\dotNetFxLatest-x86-x64-AllOS-ENU.exe

拷貝到 VS2019 安裝目錄後,本著「關掉引擎好換檔」的心態,先重新開機,再手動安裝 .Net framework 4.7.2 試看看。

手動安裝 .Net framework 4.7.2
手動安裝 .Net framework 4.7.2

沒想到還是失敗,但是手動安裝的好處就是有畫面。

.Net framework 4.7.2 安裝失敗
.Net framework 4.7.2 安裝失敗

從記錄檔可以看到錯誤原因發生在安裝 Windows8.1-KB4054566-x64.cab 時,找不到物件或內容。最重要的是有錯誤訊息。 (failed with 0x80092004)

安裝的詳細錯誤訊息
安裝的詳細錯誤訊息

一開始我以為是 VS2019 封包的檔案有問題,到微軟下載中心抓最新的 .Net framework 4.7.2 (NDP472-KB4054530-x86-x64-AllOS-ENU.exe) ,執行安裝,仍然發生上面錯誤訊息,比對內容檔案,是同樣的時間,所以應該沒更新的可以搞。

想說開啟新增移除程式看看,一看,居然 .Net framework 4.7 以後都沒有:

Net framework 沒有 4.7 以後版本
Net framework 沒有 4.7 以後版本

想說那就從 .Net framework 4.7 逐步安裝好了,沒想到裝 4.7 與 4.7.1 都說我已安裝更高版本的 .Net framework ,那我就試試看安裝 4.7.2 的繁體中文語言套件 (NDP472-KB4054530-x86-x64-AllOS-CHT.exe) ,還是回應找不到物件或內容。

想來只能想辦法移除 .Net framework 4.7.2 重新安裝,就 Google 搜尋移除 .Net framework 4.7.2 的文章,結果找到一篇很有用的文章:

.NET Framework 4.7.2 install error 0x80092004 — Cannot find object or property

看標題似乎就是中獎了~ 裡面內容概要是說在 TechNet 論壇有位 mwjvl 網友幫助他解決這個問題。解決步驟如下:

  1. 建立一個存放 kb 的目錄,目錄名不是很重要,但是為了方便解說操作,用下面的目錄名:
    C:\updatefix\expanded\
  2. 到微軟 Windows Update Catalog 下載 KB4340558 存放到:
    C:\updatefix\
  3. 將所有下載的 .msu 解壓縮到
    C:\updatefix\expanded\
    ,使用指令:
    expand -f:* “C:\updatefix*.msu" C:\updatefix\expanded\
  4. 使用指令將 C:\updatefix\expanded\ 內的所有 .cab 安裝到 Windows 內,其中 WSUSCAN.cab 不用安裝,視情況可能需重新開機。使用指令:
    dism /online /add-package /packagepath:C:\updatefix\expanded\filename.cab
  5. 若發生錯誤,移除重新安裝。使用指令:
    dism /online /remove-package /packagepath:C:\updatefix\expanded\filename.cab
  6. 重複步驟 4 ,直到所有 cab 都成功安裝。
  7. 上面建立的 C:\updatefix\ 沒用了,可以刪除
  8. 可以重新安裝 .Net framework 4.7.2 了

在步驟 2 ,我下載 KB4340558 時,有 3 個 .msu 可下載:

KB4340558 有三個檔案可下載
KB4340558 有三個檔案可下載

在步驟 4 ,我在安裝 KB4338419 時,發生 0x80092004 錯誤,我把它移除重裝。

發生錯誤移除重裝
發生錯誤移除重裝

完成後,手動安裝 .Net framework 4.7.2 ,就成功安裝了。

成功安裝 .Net framework 4.7.2
成功安裝 .Net framework 4.7.2

安裝完要求我重新開機:

重新開機啦
重新開機啦

重新開機後,再執行 VS2019 安裝,選「重試」,就會跳過 .Net framework 4.7.2 ,進行下一個功能安裝:

繼續安裝 VS2019
繼續安裝 VS2019

終於安裝完成,要求我重新開機:

VS2019 要求重新開機
VS2019 要求重新開機

確認安裝完成,從安裝精靈第一次啟動 VS2019:

第一次啟動 VS2019
第一次啟動 VS2019

總算搞定收工。不過詭異的是,我的 Win2012r2 在「程式和功能」那邊還是沒有任何 .Net framework 4.7 的安裝,只有 Visual Studio 2019 的安裝。

廣告
Categories: 技術分享 | 標籤: | 1 則迴響

[VSCode] 1.32 便攜版的語言介面未正確升級


便攜版就是免安裝版。

Visual Studio Code 強大之處就是小巧方便,所以我當然不會自作孽去安裝安裝版,而是使用免安裝版。

我在多台電腦上有安裝 VSCode ,上次在公司 NB 升級 1.32.1 時,有發現繁中語言介面升級後不正常,所以我採用整個目錄砍掉重裝,但發現這樣我得把外掛也跟著重裝,所以家裡電腦升級 VSCode 時,就改變方案,沒想到在家裡已經是 1.32.3 了,我公司升級應該是五天內的事,沒想到五天內改了兩個版本。

VSCode 升級通知
VSCode 升級通知

事先我是知道要升級,但是我習慣用便攜版,所以我不從對話框升級,而是到官網下載壓縮檔後解壓縮,覆蓋舊的便攜版。

先前舊版升級時,覆蓋完就正常結束了,沒想到低於 1.32 版升級到 1.32.1 或 1.32.3 版,都會呈現介面中英文混雜的情形。

呈現中英文混雜的介面
呈現中英文混雜的介面

改善的方法很簡單,先移除舊版中文介面。這邊很弔詭的是,VSCode 版本是 1.32.3 ,但是中文介面的版本是 1.32.4 。

移除繁體中文介面
移除繁體中文介面

再點選 [install] 安裝繁體中文介面。

安裝繁體中文介面
安裝繁體中文介面

安裝完語言介面並不會立刻變更,把 VSCode 關閉重新打開,就會顯示新的繁體中文介面了。

恢復成為繁體中文介面
恢復成為繁體中文介面

難得碰上不正常升級,我在想,可能是語言的翻譯檔標籤變更之類,導致不正常吧。

Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

[Android] 無法正確封存 App – Xamarin for VS2017


老闆要求修改軟體圖示 (icon) ,去年年底到今年一直無法正確封存 App ,主要是因為一開始一直用 Android Emulator 測不過。

[Android] Android SDK Tools 25.2.5 無法移除 – Xamarin for VS2017

原先在 2017 開發 Android App 時,還用 Visual Studio Emulator For Android 開發,由於主要是使用 HTML5 網頁,只需要一個 WebView 框架,所以完成後,App 就擺一邊了。

去年年底要更新 App 時,才發現 Visual Studio 2017 自動更新後, Visual Studio Emulator For Android 已經不能用了,新的開發要直接使用
Android Emulator ,今天受不了了,找出很舊的實體機 Android 4.4 測後,錯誤訊息不同了:

剖析套件時發生問題

有了錯誤訊息是個好的開始,上網查了,有篇文章說到,有時 VS2017 會不正常,從方案總管那邊,滑鼠右鍵,封存後試試。

封存編譯好的專案

居然這樣後,再下載就能在實體手機跑了,先前到底是死在哪阿?

網頁上說正常後,選單也可以正常跑了,我先前都是從選單跑,先跑重建方案,再跑封存。

選單封存功能

卡了三個月,到底在卡啥?VS2017 修復不知道多少次,我還搞到把 VS2017 全部乾淨移除後重灌,結果居然是莫名其妙的怪狀況。

不過即使實體手機能跑,Android Emulator 還是不能跑,要你何用啊…

Android 4.4 最慘,連執行安裝都不行
Android 7.1 顯示不相容
Android 8.0 顯示未安裝

我真是搞不懂這模擬器是要幹嘛用的,實機能裝,虛擬機都不能裝。

[2019/03/15 新增]

同事發現我把在螢幕上的軟體名稱打錯了,所以我今天重新打開 VS2017,編譯、封存,拿實體機來測試,居然又不能正常封存:

無 Icon

檢查專案屬性,居然 Icon 的設定跑掉了,我就今天打開 VS2017 改個名字而已啊~

改完 Icon 設定,還是不正常:

未安裝應用程式

回想昨天是先在 Android 4.4 上測試成功,先把專案目標 API 設定為 v19 ,再改回 v26,開啟 Android SDK Manager,重新以系統管理員開啟 VS2017 ,到方案總管,重新建置方案後,再重新建置專案、封存專案,又正確可以安裝到行動裝置了。趕快上傳 Google Play 。

Xamarin for VS2017 該不會是佛性編譯器吧?一切看緣分阿~

Categories: 封裝部署, 工作點滴, 技術分享 | 標籤: | 1 則迴響

[Android] Android SDK Tools 25.2.5 無法移除 – Xamarin for VS2017


我 2017 開發的 Android 要小改重新上線,這中間經過 VS2017 多次升級,甚至因為 Win10 1803 導致我重新安裝 VS2017 。

App 可以正常編譯成 .apk ,並經過封存、散發的步驟製成有簽署的 .apk ,但是不論如何,拿到虛擬機或實機跑 App 安裝完成後,都會顯示:

App not installed

一直解決不了,上網搜尋有提到 Android SDK 要整個更新到新版。

但 Android SDK Tools 這部分就是更新不上去,最後是跑完整 uninstall 後,到 Android 官方網站下載新版的 Android SDK Tools

下載完後,解壓縮至:

C:\Program Files (x86)\Android\android-sdk\tools

再從 VS2017 內呼叫 Android SDK 管理員,即可發現 Android SDK Tools 已經升級到最新版,我下載時的版本是 26.1.1 。

不過手動安裝會清除已安裝清單內容,所以所有 SDK 跟 Image 等都需要重新下載安裝,目前我的電腦正在跑,希望這部分搞定後,我的 Android 程式就可以跑了~

結果還是一樣阿~~~

App not installed
Categories: 工作點滴, 技術分享 | 標籤: | 1 則迴響

[iOS] 環境升級後,無法正常編譯 App


話說七月底完成 iOS 程式後,我就沒開過 MacBook Pro 。

老闆忽然嫌棄起 App 在 iPhone 上的顏色,所以由形象設計師不斷改版,直到老闆終於 OK 選定 Icon 後,昨天我把 MacBook Pro 打開。

太久沒開機了,昨天就是一直更新,XCode 從 11.x 更新到 12.0 ,再更新到 12.1。

今天早上開 Visual Studio for Mac 也觸發更新,等到更新完都快中午了。

把新的 Icon 置換進去,變更版號後,重新編譯居然發生錯誤。我一開始以為是我操作有問題,直到後來編譯沒改過的測試專案後也發現相同的問題。

主要錯誤是 ibtoold 引起,錯誤訊息為:

unrecognized selector sent to class

unrecognized selector sent to class

unrecognized selector sent to class

開了多個專案都在畫面出錯 (.storyboard) ,可能是啟動畫面或主畫面,似乎都是軟體啟動的第一個畫面。

眾裡尋她千百遍,終於找到,是 XCode 尚未更新完造成。當然不是的話可以試試 google 找到的其他方案。

先把 Visual Studio for Mac 關閉。

打開 XCode ,可以看到,雖然 App Store 那邊說更新完畢了,但是實際上尚未更新:

XCodeUpdate_02

完成 XCode 更新

按下 [Install] 讓它跑一下:

XCodeUpdate_03

更新 XCode 中

更新完成後版本為 10.1 。

XCodeUpdate_04

完成 XCode 更新

再開啟 Visual Studio for Mac 重新編譯就正常通過了。

 

 

Categories: 工作點滴, 技術分享 | 標籤: | 1 則迴響

[iOS] WebView 瀏覽 http 的安全性設定 – Visual Studio for Mac


去年做 Android 的 App ,今年老闆要我做 iOS 的 App 。

我的大部分還是靠 HTML5 網頁呈現即時資訊,所以我主要只要把 App 包個 WebView 即可。

一開始我是在 Xamarin.iOS 大分類下看說明學著寫,例如這個 WebView:

https://docs.microsoft.com/zh-tw/xamarin/ios/user-interface/controls/uiwebview

我一開始以為我自己看得很透了,直接開始寫,但是怎樣都卡在連不上我的手機網頁,只好從上面網址抓線上範例來測試,範例網址的確可以正確呈現:

https://xamarin.com/

但是我只換網址為我的手機網頁就不行,畫面全白… 我開始鎖定是 http 跟 https 的差異。一找,果然在說明書找到:

https://docs.microsoft.com/zh-tw/xamarin/xamarin-forms/user-interface/webview

這個網頁是介紹 iOS/Android/Windows Phone 三種行動裝置共用的設計部分,在網頁中可以看到,iOS 特別註解從 iOS 9 以後安全性變更,預設不能瀏覽 http ,要修改安全性設定…

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

 

冏… 為啥 iOS 的特殊設定不是放在 Xamarin.iOS 下,而是放在 Xamarin Forms 下…

但是又碰上個難題,我是直接在 MacBook Pro 下安裝 Visual Studio for Mac ,沒有另外安裝純文字編輯器可以直接輸入安全性規則,比對原始碼內容,在介面上測試輸入如下:

設定網址安全性

設定網址安全性

重新編譯執行,果然可以正常瀏覽 http 網址。

編輯步驟:

  1. 在最下方點選 [新增項目]
  2. 類型選 [字典]
  3. 編輯項目名稱改為 NSAppTransportSecurity
  4. 在屬性 NSAppTransportSecurity 下方點選 [新增項目]
  5. 類型選 [布林值]
  6. 編輯項目名稱改為 NSAllowsArbitraryLoads
  7. 值 改為 是

存檔後會跟上圖一樣。

微軟網站的線上手冊沒考慮直接使用 Visual Studio for Mac 編輯,所以只能自己試啦。

可以看到專案名叫做 HelloWebView … 跟 Hello World 差不多的意思~~~

Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

[Android] WebView 啟動時自動調整大小 – Xamarin for VS2017


我的目標網頁有設定在 html5 的 head 有設定下行:

<meta id="metaViewPort" name="viewport" content="width=480px" />

WebView 預設開啟時,並無法正確的映射到這個尺寸,雖然可以在螢幕上點兩下自動縮放到設定大小,但總是要多一手。

因此透過程式碼設定初始化大小,主要就是這句:

MobileBrowser.SetInitialScale(GetDeviceInitScale());

程式碼片段寫在 MainActivity.cs


private int GetDeviceInitScale()
{

// 預設寬度 480d, 100%: 100d
double val = (double) Resources.DisplayMetrics.WidthPixels / 480d * 100d;
return (int)val;

}

protected override void OnCreate (Bundle bundle)
{

base.OnCreate (bundle);

SetContentView(Resource.Layout.Main);

MobileBrowser = FindViewById<WebView>(Resource.Id.MobileBrowser);

//啟用Javascript Enable
MobileBrowser.Settings.JavaScriptEnabled = true;

//支援縮放 ViewPort
MobileBrowser.Settings.LoadWithOverviewMode = true;
MobileBrowser.Settings.UseWideViewPort = true;

// 計算螢幕比例
MobileBrowser.SetInitialScale(GetDeviceInitScale());

MobileBrowser.SetWebViewClient(new CustomWebViewClient());

//載入網址
MobileBrowser.LoadUrl(“http://www.company.com/");

}


這樣開啟 WebView 就會自動縮放到網頁大小了。

Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

[Hyper-V] 在 Visual Studio Emulator For Android 我的虛擬網路設定


我在 Win81 時的 Hyper-V 中,透過 Loopback 網卡來分享 WiFi 給虛擬機用:

[Hyper-V] 我 NB 用的虛擬網卡
https://tlcheng.wordpress.com/2016/02/22/hyper-v-%e6%88%91-nb-%e7%94%a8%e7%9a%84%e8%99%9b%e6%93%ac%e7%b6%b2%e5%8d%a1/

當時的 NB 是效能不是很好,所以一直沒考慮使用 Hyper-V 跑 Android 模擬機,一直用 VirtualBox 來跑 Android 模擬機。

Visual Studio 2015 (VS) 以後,微軟推出了整合 VS IDE 開發環境與模擬機的架構,提高 Android 行動軟體開發速度,沒有安裝 VS 的電腦也可以安裝來跑 Android 模擬機:

Visual Studio Emulator For Android (以下簡稱模擬器)
https://www.visualstudio.com/zh-hant/vs/msft-android-emulator/

當然有安裝 VS 2017 的有內建,VS 2017 內建的版本比上述網站下載的還新。

我開始在 Hyper-V 測試模擬器,一開始就卡在開機中的畫面,不知道啥原因:

卡在開機中的畫面

卡在開機中的畫面

 

Terry Lin 建議我依照下面這篇除錯:

Visual Studio Emulator for Android 疑難排解
https://msdn.microsoft.com/zh-tw/library/mt228282.aspx#NoStart

無法解決問題,之後 Ian Chen 建議我把所有 Virtual Switch 全部砍掉一預設值重建,砍掉前我有看了一下設定後,砍掉重建,重建後我的模擬機就能完成開機,但卻出現不能上網。

Windows Phone Emulator Internal Switch

Windows Phone Emulator Internal Switch

註:後來是因為我的 Windows Phone Emulator Internal Switch 內不知道為啥預設是 169.* 開頭的 IP ,這裡必須是動態取得 IP

一開始無法上網,我依據先前跑 Windows VM 的慣例,把 Microsoft Loopback 網卡設定給 Android 模擬器,但是還是無法上網,Aska Su 建議我用 Hyper-V 建一個 Hyper-V Loopback 內部虛擬網路:

Hyper-V Loopback

Hyper-V Loopback

再把 WiFi 分享給 Hyper-V Loopback 虛擬網卡:

共用 WiFi 給 Hyper-V Loopback

共用 WiFi 給 Hyper-V Loopback

 

我用 Windows VM 測試,也可正常成功。

Hyper-V Loopback 速率 10 Gbps

Hyper-V Loopback 速度

Hyper-V Loopback 速度

比 Microsoft Loopback 網卡 1.2 Gbps 快。

Microsoft Loopback 速度

Microsoft Loopback 速度

 

但是 Android 模擬器仍無法上網。測試各種方案,Android 模擬機都會自動把 Windows Phone Emulator Internal Switch 虛擬網卡自動加入,若是參數不正確,還會自動把前次設定錯誤的網卡刪除。

苦無對策,拜了 google 大神,一般解決方案都是將無線網卡加入第二張 Android 模擬機網卡,這表示我得放棄不將 WiFi 加入虛擬交換器,必須將 WiFi 加入到 Hyper-V 內。

虛擬交換器管理員

虛擬交換器管理員

WiFi 一加入虛擬交換器就會組成網路橋接器,這讓網路管理複雜很多:

網路橋接器

網路橋接器

加入到 Android 模擬機第二張網卡:

WiFi 加到第二張網卡

WiFi 加到第二張網卡

就可正常上網了:

從無線基地台取得實體 IP

從無線基地台取得實體 IP

註:若網路設定錯誤,Android 模擬機仍會自動將無線網卡刪除

成功上網後,摸清楚特性,就測試改用 Hyper-V Loopback 網卡,由於 Hyper-V Loopback 網卡為內部網卡,只要一設定 IP ,例如共用網路變成 192.168.137.1 ,就會造成模擬機無法開機,只有外部網卡能設 IP。因此又回頭使用 Microsoft Loopback 網卡加入虛擬交換器:

Microsoft Loopback 加入第二張網卡

Microsoft Loopback 加入第二張網卡

再將 WiFi 分享給 Microsoft Loopback 虛擬網卡

WiFi 分享給 Microsoft Loopback

WiFi 分享給 Microsoft Loopback

一樣自動被設定為 192.168.137.1

虛擬網段 IP

虛擬網段 IP

讓網路設定變得比較乾淨:

實體網卡好管理

實體網卡好管理

終於,可以把先前的 Microsoft Loopback 網卡分享給 Android 模擬機。

透過 Microsoft Loopback 取得虛擬 IP

透過 Microsoft Loopback 取得虛擬 IP

平常沒有使用 Hyper-V 的時候,我就會停用不相關的網卡,另外重新把 Windows VM 網卡設給 Microsoft Loopback ,反正 1.2 Gbps 也夠我用了,平常就懶得動,直接用同一張須擬網卡就可以,這樣在外沒有無線基地台的情況下,模擬器也可以透過 192.168.137.* 網段與 NB 溝通,恢復到我的習慣工作環境了。

Categories: 工作點滴, 技術分享 | 標籤: | 7 則迴響

[VS] Visual Studio 20 周年 – 我與 Visual Studio 的故事


大家都在回顧 Visual Studio ,我也參一腳,如果是想要看技術文的,現在可以跳出了,這是一篇回憶文。

我在
Microsoft Basic 歷史回顧
這篇有回顧了微軟的 Basic ,重複的就不多說了,就從 Visual Studio 前身說起好了。

在 1991 上大學時,學校教 Fortran ,那時用 Microsoft Fortran 5.0/5.1 ,裡面包含了 Visual Studio 最早的前身:
Microsoft Programmer’s WorkBench (PWB)

Microsoft Programmer's WorkBench (PWB)
Microsoft Programmer’s WorkBench (PWB)

來源:http://www.phatcode.net/res/175/images/masm6_01.png

PWB 內修改 Fortran 編譯參數
PWB 內修改 Fortran 編譯參數

來源:http://d.hatena.ne.jp/fortran66/20120503/1336066971

QuickHelp

QuickHelp
QuickHelp

來源:http://www.phatcode.net/res/175/images/masm6_02.png

當然,在那個年代,Quick Basic 彈性遠高於 PWB ,但這也是直譯環境跟編譯環境的差異,不能直接比較。

我還有在 BBS 貼文分享將同一支程式碼編譯成 DOS/Windows 雙用的執行檔:
http://www.tlcheng.tk/TLCheng/Fortran/Msf51/doswin.txt

那個年代,PWB 支援五種語言,可以從 QuickHelp 畫面看到,支援:
Microsoft C/C++ (5.0 ~ 7.0/MFC 1.0,後接 Visual C++ 1.0)
Assembly (MASM)
Microsoft BASIC Professional Development System (PDS/QBX 7.1,不能用 QB45,後接 VBDOS/VB 1.0)
Microsoft Fortran (5.0/5.1,後接 Microsoft Fortran PowerStation 1.0)
Microsoft COBOL (5.0)

所以可以看出,微軟曾經打算用 PWB 一統開發環境過,除錯時則會自動呼叫 CodeView,我是懷疑 CodeView 是最早的 DLL。

從 PWB 選單架構來看,就可以看到現在 Visual Studio 選單的雛型,彈性的編譯參數調整,也引領現代的 Visual Studio 。而 QuickHelp 就如同後來的 MSDN 線上手冊,怎麼看,都沒辦法把 PWB 跟 Visual Studio 做切割。

那時,我用 Fortran 主要是寫 DOS 程式,也寫過 Windows 程式 (QuickWin) ,在那個年代,只有 DOS 下 512kb 左右的記憶體可用,編譯成 Windows 程式,單一陣列就可以開到 8MB ,對於水利海洋計算都是大範圍面積的幫助很大。

在 PWB 下寫的基本上都是作業,1992用 Fortran 寫河工學作業算河道縱斷面水位時,就把它當成簡單電動寫,換現代的說法就是閒著蛋疼,不過那個年代沒啥娛樂,所以寫作業也能寫出樂趣來。

大三河工學作業-河道斷面水位計算
大三河工學作業-河道斷面水位計算
大三河工學作業-結束時版權畫面
大三河工學作業-結束時版權畫面

可惜當時 QuickWin 的程式畫面我都沒截,只能看網路的畫面緬懷一下。

Microsoft Fortran 5.1 QuickWin
Microsoft Fortran 5.1 QuickWin

來源: https://software.intel.com/en-us/node/535318

除此之外,我還用 PDS 7.1,PDS 7.1 自己有 QBX 介面比 PWB 好,但是若是要談到混合語言,就只能在 PWB 下,我記得我當時有三本混合語言的書,不過有一本松崗翻譯微軟手冊的書不見了,只找得到兩本。

Microsoft 混合語言程式設計
Microsoft 混合語言程式設計
五種熱門語言 類似用法導向
五種熱門語言 類似用法導向

所以可以看出來,當時微軟不但想要用 PWB 統一開發環境,還打算在這個開發環境下跨語言支援,跟現在 Visual Studio 設計理念很像,所以我認為 PWB 是 Visual Studio 的前身。

1992下半年後,分別到兩個副教授手下去做兼任研究助理,一邊學 AutoLISP 在 AutoCAD 自動繪圖,另外一邊主要是跟 HP BASIC 奮戰,當時用 QB45 寫了一個潮位站資料擷取通訊程式,大概是主要的成果。

兩邊副教授一邊用 AmiPro ,一邊用 Word 5.0 ,Word 5.0 那時還不是 VBA ,內建 WordBasic ,直到 1995 年國科會統一收 Word 6.0a 格式提送的計畫書,才再也沒碰過 AmiPro 。

比較詭異的是,台灣可以找到 Word 5.0 的電腦書,但是維基百科沒有 Word 5.0,該不會是因為中文化的特殊版本吧:https://en.wikipedia.org/wiki/Microsoft_Word

這篇可以找到日文版的 Word 5.0 版權畫面跟螢幕畫片:http://lsair.html.xdomain.jp/a/e/ibm-win31-screenshots.html

Google 也可以看到當時出了很多中文書:https://www.google.com.tw/#q=%22Microsoft+Word+5.0%22+%E4%B8%AD%E6%96%87%E7%89%88

但是拿來寫第一篇研討會論文的卻是用 AutoLISP + Quick Basic 寫:
徐昇多邊形網的自動化計算」,八十四年電子計算機於土木水利工程應用論文研討會論文集,中壢,第 465 – 476 頁,民國 84 年 10 月。

在 AutoCAD R12 呼叫外部QB45程式產生綠色、黃色、淺藍色三圖層
在 AutoCAD R12 呼叫外部QB45程式產生綠色、黃色、淺藍色三圖層

VB for Windows 發展迅速,在 VB3 以前,一統 Windows 3.1 以前的開發環境,用 C 根本是作孽,在沒有 MFC 之前,用 Fortran 或是 C 寫 Windows 程式差不了太多。

1993/02/09 微軟出了 Microsoft Fortran Powerstation 1.0 for Windows and DOS,我印象中這時的介面跟 VC 1.0 就是最早的 Visual Studio 原型,可是太久了,記不太清楚,我印象我有用過的版本應該是 1994/02/08 出的 1.0a ,當時我在 tw.bbs.comp.language.fortran 論壇回文時就有提到,以前在 google Newsgroup 那邊還搜尋到過。

PowerStation 1.0
PowerStation 1.0

來源: http://www.emsps.com/oldtools/msforv.htm

Microsoft Fotran PowerStation 1.0
Microsoft Fotran PowerStation 1.0

來源:http://d.hatena.ne.jp/fortran66/20120503/1336066971

這時的 Fortran 版本是最慘的,我記得除了呼叫 Process 方式可以跨語言外,其他沒有方法支援,而這時候的 PowerStation 也不支援呼叫 API ,所以沒辦法透過 API 呼叫 VC 寫的 DLL ,反而 VB3 還能呼叫 VC1 的 DLL ,VC1 則不能呼叫 VB3 的 .vbx。

1994年,GIS剛開始興盛,資策會放了一堆給 VB3 用的 API 出來,我那時下半年要執行研究計畫,到水資源統一規劃委員會 (現在水利署台北辦公室) 學當時台灣跟荷蘭一起合作的 VB3 寫的水資源調度軟體,下半年做計劃的時候自己寫。
「台灣地區水資源供需情勢分析(一)」,台大慶齡工業研究中心,台北,民國 85 年 6 月。

1995年,用 VB3 寫類神經網路程式,放在多台電腦上跑學習,才讓我順利畢業,不過程式碼都不知道到哪了,更別說畫面了。程式碼我在念博士班時還有翻出來給碩士班學弟用,不過我現在還是找不到執行畫面…

1995/05/10 出的 Microsoft Fortran PowerStation 4.0 / Visual Basic 4.0 16/32 bits / Visual C++ 4.0 正式孕育起 Visual Studio ,首先第一件事就是統一版號,當時因為 VB 已經 3.0 了,所以 PowerStation 直接從 1.0b 跳到 4.0 ,VC 則從 2.0 跳到 4.0,編譯器正式從 16 bits 跳到 32 bits。

PowerStation 4.0
PowerStation 4.0

來源: http://www.emsps.com/oldtools/msforv.htm

維基百科 Visual Studio 有提到:
Prior to Visual Studio Version 4.0, there were Visual Basic 3, Visual C++, Visual FoxPro and Visual SourceSafe as separate products.

另外在 http://www.academia.edu/7247842/Dendi_Hidayat_-_Perbedaan_Web_Form_dan_Windows_Form
提到 Visual Studio 第一版是在 1995/04 出的,而 4.0 就是第一版。

但是多方查證的結果,應該當時是叫做 Microsoft Developer Studio 4.0 ,最糗的事我自己的網頁還有截圖:

標題列為 Microsoft Developer Studio
標題列為 Microsoft Developer Studio

來源:http://www.tlcheng.tk/TLCheng/Fortran/MSF4/fdebug.htm

PowerStation 滿慘的,連維基百科都沒有介紹專頁,幾乎找不到它的存在。Fortran 在 1985 前是獨霸科學界,連飛出太陽系的冒險家 1/2 號,都是用 Fortran 寫的,直到 1985 後,C 才開始抬頭,沒想到現在回顧過去,連資料都找不太到。

VB4 看起來是 1995/08 出的:https://en.wikipedia.org/wiki/Visual_Basic
VC4 看起來是 1995/12/11 出的,從 VC 的歷史還能看到我先前提到關於 Fortran 的歷史,懷念阿~ https://en.wikipedia.org/wiki/Visual_C%2B%2B

從分別出版的時間看,當時也只統一了版號跟 Fortran/VC 開發環境,這時還沒有 Visual FoxPro,但這時 PowerStation 4 已經恢復了透過混合語言呼叫 VC 或是產生 DLL 給 VB4 叫用。

而在 Office 中,Excel 4.0 的 Macro / Word 5.0 的 WordBasic ,也被統一為 Visual Basic for Application ,雖然還是巨集,但是已經是 VB 的成員,當兵前把經驗傳承給學弟,當時我的碩士論文是用 Excel 讀取 VB3 算出來的資料,送進 Excel 畫圖,再自動產生 Word 表格跟插圖,節省我大量人工時間,指導教授換個參數,跑完可以自動產生表格與圖,完全不用花時間整理,因此寫了一篇:
MS Office 自動化巨集 (Excel & Word)

1996下半年去當兵,在部隊倒是有摸到 VB4 16 bits ,那時在工校受訓,到校部寫排課系統,沒寫完就分發到部隊了,聽說後來下基地的同梯又被抽去寫排課系統,對我抱怨很多~~~ 哈哈。

1997年中調司令部接工補官,開始週三下午有散步假,周四早上莒光日前收假,散步假回台北顯然是不現實的,當兵的人又死也不想待部隊,所以我就回成大找念博士班的同學,就待在同學研究室耗到天亮,這時同學開始用 PowerStation 4.0 ,我沒事就玩這個… 現在想起來也滿悲哀的,同學研究室有點像後來的網咖,上網上到爽,但我又不可能在同學電腦裝電動,所以只能拿編譯器來玩消磨時間…

當時補辦室還在用 386 兩台打公文,隔壁的參四科有一台 486 ,我就用 QB45 寫了公文排版系統給補辦室跟參四科用。之後補辦室室長買了一台私人的 Pentium ,又碰上精實案,我跟另外一個通補官就在那台奔騰上寫精實案的資料庫~

大概太閒了,利用空檔把碩士論文整理成研討會論文,本來還夢想當兵可以請公假去,結果不行:
分佈型類神經網路降雨逕流模式之研究」,八十六年電子計算機於土木水利工程應用論文研討會論文集,新竹,第 993 – 1004 頁,民國 86 年。

1997下半年另一個同學電腦有裝 VB4 ,就開始完善先前在 台灣地區水資源供需情勢分析 計畫中,寫到一半的網流程式,然後以工兵少尉的身分寫了一篇:

Network Flow Programming 計算路網中
Network Flow Programming 計算路網中

「簡易部隊移動路線之最佳化分析」,陸軍工兵科技季刊 106期(已接受),燕巢,民國 87 年 2 月。

接著又寫一篇:
工兵部隊道路爆破路線選擇之研究」,國軍電腦兵棋專輯第五輯,台北,第 73 – 89 頁,民國 87 年 6 月。

當時在投國軍電腦兵棋時,工兵季刊出到105,所以打電話去問承辦少校,承辦少校說已接受,預定 106 刊出,我就直接寫到上面那篇 (見參考文獻 1) ,等到 106 沒刊出,我又打電話去問,承辦少校說,它的中校科長嫌我軍階低,不想刊出… ㄜ… 我回他說,電腦兵棋那邊刊出後面的了,你自己看著辦吧,我也不知道要說啥,接著我就退伍了,我也不知道後面到底有沒有刊出來。

電腦兵棋算是軍方 A 級期刊,工兵季刊大概是 B 級,被 B 級嫌棄卻被 A 級接受,我想當時的承辦人臉上應該是個冏字吧~ 哈~~~

1998年退伍回到學校,先用 PowerStation 4.0 寫程式,上面那篇 PowerStation 的圖就是,然後去投研討會。
發揮水田坵塊生態保護效益之田埂高度」,八十七年度農業工程研討會論文集,台北,第 829 – 836 頁,民國 87 年 12 月。

同時開始使用 VB5 寫介面整合 Fortran ,跟痞子蔡 (蔡智恆) 做曾文防洪計畫,河道演算的 Fortran 程式就是痞子蔡寫的:
曾文水庫防洪運轉資訊系統操作手冊」,成大水利海洋研究發展文教基金會,民國 88 年 5 月。

同年指導教授建立 風雨災害實驗室/水海資料庫 ,我也開始 ASP 人生。當時,覺得有 Bill 真好,一個 Basic 用遍 DOS/Windows/Web/office ,那時的 VC 可還不能寫網頁呢~ 哼哼~

我最早寫的 asp 網頁可能是 水利 83 級留言簿

開始用啥寫 ASP 我已經不記得了,我記得後來是用系上買的 Visual Studio 的另一個成員 Visual InterDev:
https://msdn.microsoft.com/en-us/library/aa239608.aspx

Visual Studio 97(5.0) 開發環境並沒有整體用同一套,內含的 VB / FoxPro 還是有各自的 IDE 環境,新增成員還有 Visual J++ 跟 InterDev,當時的軟體標題卻是 Microsoft Developer Studio,而原先與 VC 整合好的 PowerStation 在 1997/03 卻被微軟拋棄賣給 Digital 了,對當時的我簡直是晴天霹靂~ Digital 配合 Visual Studio 分別推出 Digital Visual Fortran(DVF) 5.0/6.0…

Compaq Visual Fortran QuickWin
Compaq Visual Fortran QuickWin
Digital Visual Fortran 5.0
Digital Visual Fortran 5.0

來源:http://www.tlcheng.tk/TLCheng/Fortran/dll/make.htm

那時候管計算機室的藍元志學長就用 Visual FoxPro 5.0 寫計算機室的設備借用歸還資料庫系統。

我退伍的時候,Visual Studio 6.0(98) 就上市了,因此我在 VB5 約用一年就晉級到 VB6/InterDev6/DF6,這個年代工作量大,產出算滿多的,有興趣可到我個人的資料區去看,這邊就不一一拉畫面了。
http://www.tlcheng.tk/TLCheng/

1998/01,Digital 就被 Compaq 併購,推出 Compaq Visual Fortran(CVF) 6.1/6.5
2002/05,Compaq 被 HP 併購,推出 Visual Fortran 6.6 ,隨即將 Visual Fortran 賣給 Intel ,Intel 配合 Visual Studio.Net 推出 Intel Visual Fortran 7.0(IVF) …
https://software.intel.com/en-us/articles/migrating-from-compaq-visual-fortran

隨著對 VB6 越來越熟悉,終於開始寫第一篇純電腦技術的文章投稿,之前的都是水利為主阿~~~
Microsoft Visual Basic 之 Variant 變數應用」,微軟之友季訊,夏季 6 月號,第 42 ~ 49 頁,民國 90 年 6 月。

隨著社會變化,我開始朝向網頁化為主,第一個不是自己本業,為了救同學研究計畫被廠商放鴿子寫的網頁專案,透過遠端 Oracle 資料庫,整合 Surfer Automation 的 ASP 網頁:
http://www.tlcheng.tk/money/tide/Help/

而自己本業整合 ASP/VB6/CVF6 的則是:
曾文溪流域水庫整體防洪運轉展示決策系統建置」,中華民國資訊學會通訊,台灣,台北,第八卷,第一期,第 209 – 236 頁,民國 94 年 3 月。

在 2002/02/13 Visual Studio .NET (2002) 上市,我屬於應用程式開發人員,並沒有第一時間將 VB6 轉換到 VBNET ,只有試用而已。不過我對 Windows Help 一直保持高度熱誠,所以 VSNET 2002 我第一個正式專案卻是 HTMLHelp 2~

HTMLHelp 2
HTMLHelp 2

來源:http://www.tlcheng.tk/TLCheng/WinHelp/Net/help.htm

今天寫這篇忽然想到,VSNET 號稱純血 Unicode Windows ,而 VS98 則是 ANSI Windows ,當初 Office 2003 說自己是 Unicode Windows ,所以不支援 Win9x ,那為啥 .Net 2.0 以前可以支援 Win9x?該不會又是微軟的陰毛吧?

2004年我離開學校後,又看到 Mono ,天啊,看起來就是要一統開發語言,才正式的投入 Visual Studio 2003 裡。

我在 ASP 寫資料庫存取時,我習慣在 ADO 用 ODBC driver ,而 VS2002 只有 Oledb ,到了 VS2003 才開始支援 ODBC ,這也是我一開始不願踏入的原因。

剛離開學校,我接了一個資策會委外的 Web Service 元件開發工作,由於 VBNET 跟 VB6 不相容,剛好我先前讀了演算法對於加速有很多想法,所以我在 VS2003 重新開發:
http://www.tlcheng.tk/Model/Online/Thiessen/Thiessen.aspx

之後寫了一堆東西,包含 News 討論區 (網路論壇)、船艦氣象觀測與海象預報展示系統、等等,也寫了一篇文章投微軟:
在 ASP.NET中 動態共用原始碼」,微軟最有價值專家 (MVP) 技術專欄,台灣微軟MSDN網站,民國 93 年 11 月。

其中跟 Visual Studio 有關又比較特別的是:
南區水資源資料庫及決策支援系統 – 南區水資源分區及聯合模擬

這個是用 Intel Visual Fortran 開發的,當時因為 Visual Studio Net 開放性架構,有兩套 Fortran 支援 Fortran.Net,這兩套到 VS2015 還支援。

Lahey/Fujitsu Fortran: http://www.lahey.com/lf77/lf77.htm
Silverfrost FTN95: http://www.silverfrost.com/11/ftn95/ftn95_fortran_95_for_windows.aspx

但是 Intel Visual Fortran 雖然能嵌入在 Visual Studio ,卻只能呼叫 Intel 程式庫,不能呼叫 .Net framework (可呼叫 API),不過沒辦法,老闆不是我啊。

Intel Visual Fortran 7.0 for Visual Studio 2003
Intel Visual Fortran 7.0 for Visual Studio 2003
Intel Visual Fortran 7.0 QuickWin
Intel Visual Fortran 7.0 QuickWin

來源:http://www.tlcheng.tk/TLCheng/Fortran/XPTheme/index.htm

2005/03,微軟終止 Visual Basic 6.0 ,網路哀聲不斷,超過 200 位微軟 MVP 連署企圖搶救 VB6 ,微軟沒有接受。

終於,VS2005 在 2005/11/07 上市了。

VS2005 首先把 .Net 從產品名稱中拿掉,接著支援 32/64 bits 編譯,第一次微軟推出免費的 Express 版本,再分標準版、專業版,也第一次導入軟體專案管理,包含 Team Server、架構版、開發版、測試版,內建巨集功能讓開發環境自動化,內建 Windows Installer/ClickOnce 協助部署,外掛VSTO、VSTD等工具,簡直讓人眼花撩亂,然後加入虛擬裝置,可以開發 WinCE/SmartPhone 2002/2003 程式,正確來說,應該才是現在用的 Visual Studio 的奠基版。

伴隨 VS2005 的 .Net framework 2.0 也是最後一個支援 Win9x 的版本。

微軟也改善了 VB6 遷移 VBNET 工具,希望將 VB6 的大量使用者遷移到 VB2005,台灣也辦了不少研討會,包含:
2006 Visual Basic 2005 開發者大會專刊」,台灣微軟,台北,第 12 – 15 頁,民國 95 年 9 月。

在 VS2005 到 VS2008 上市那幾年,我主要在做:
海洋氣象數位服務專用平台之建置」,2008天氣分析與預報研討會,台灣,台北,第 493 – 500 頁,民國 97 年 9 月。

接著,VS2008 於 2007/11/19 上市。VS2008 主要考量未來大螢幕趨勢,推出新的視窗介面 WPF ,強大的 LINQ,因應 Vista 新的 Windows 資料安全架構進行加強與更新,而我為了前向相容到 Win2k ,到 VS2015 的年代,我還在用 .Net framework 2.0 ,後面的 VS2008/2010/2012/2013/2015 對我來說,只是更換編譯介面編譯 .Net framework 程式碼。

而 VS2008 起移除 Help Compiler 功能,整個微軟的開發環境除了舊版可編譯輔助說明外,完全不再提供線上手冊編譯環境,要編譯線上手冊就要使用協力廠商套件。

MSDN for Visual Studio 2008 SP1 也是最後一個單機方便好用的線上手冊,大大降低大家開發時,查詢線上手冊所需時間。

之後我到現在的公司上班,作品屬於公司財產,不適合隨意發布。

VS2010 於 2010/04/12 上市,這是最後一個支援 WinXP 版本,加入新的 F#、Silverlight 及 Windows Phone 支援,相對的,把 WinCE / SmartPhone 支援全部拿掉,而這個版本線上手冊大改,簡直難用到爆,爆雷是一個接一個,後來得靠 MVP 開發的 H3Viewer,而資料庫從這個版本起,內建支援 SQL Server Compact,我印象中從這個版本起,Visio 畫的 UML 之類的圖就不能匯入,改由 Visual Studio 自己的介面繪製。

VS2012 於 2012/09/12 上市,這個版本起,加入新的 Windows 8 /Phone 動態磚支援,免費的 Visual Studio Express 不再依照語言分,而是改功能分。而這個版本又拿掉 Windows Installer 支援,微軟記取 VS2010 線上手冊太爛的事進行更新,但是新版的線上手冊改善有限,網友們還是在呼喚 MSDN for Visual Studio 2008。

VS2013 於 2013/10/17 上市,VS2013 強大的增益集功能補充了部分缺憾,比如說 Windows Installer 的回歸,但也拿掉 SQL Server Compact 支援,看起來 SQLCE 似乎是被拋棄了。

VS2015 於 2015/07/20 上市,改善網友分享增益集可能產生的效能問題,但是我的還是會超慢啊~~~ 新版的預設程式碼編輯環境改掉 VS2013 以前白底為主,改用黑底為主。之後原先命名為 Express 分散的免費版,改為整合的 Community 免費版,包含完整的專業版功能。

Visual Studio Code (VSCode) 於 2016/04/14 上市,完全免費不具有編譯功能,純粹是編輯器,並提供跨平台編輯器,亦提供增益集,可供使用者外掛自訂功能。
 https://en.wikipedia.org/wiki/Visual_Studio_Code

從 Digital Visual Fortran 5.0 圖片我發現標題列還是叫 Microsoft Developer Studio ,其實跟 PowerStation 4.0 標題列一樣,我又上網 Google 了 VC++ 圖片:

Visual C++ 4.0
Visual C++ 4.0

來源:http://www.tarma.com/articles/1996sep.htm

Visual C++ 5.0
Visual C++ 5.0

來源:http://courses.cs.vt.edu/~cs1044/Visual5/build.html

標題都是 Microsoft Developer Studio 阿~~~ 而 Visual C++ 6.0 的標題則變為 Microsoft Visual C++ ,所以 Visual Studio 今年不應該算 20 歲吧?

若從 PWB 開始算,PWB 我一開始用就是 2.x 版,我不確定第一版本在哪版出現,我是知道從 Microsoft C 5.0 就有,但之前就不清楚,沒記錯的話是 1987 出 Microsoft C 5.0,1988 出 Microsoft C 5.1 ,從 PWB 開始算可能至少 30年。

另一種算法是從第一套 Visual 系列的 Visual Basic 1.0 開始算,1991/05 VB1.0 上市,所以可以算做 26 年。

還有一種算法是從 1993/02 的 Visual C++ 1.0 開始算,從 VC 開始,正式進入 Windows 版本的整合開發環境,包含 PowerStation 1.0 ,這樣就是算做 24 年。

再一種算法是從 Microsoft Developer Studio 這個標題算,那就是從 1995/12/11 的 Visual C++ 4.0 開始算,算做 22 年,從這個算法也是有道理的,因為 Visual Studio 那個無限大的 Logo 就是從這個版本開始的,上面的螢幕擷圖都可以看到。

Microsoft Developer Studio 4.0 安裝畫面
Microsoft Developer Studio 4.0 安裝畫面

來源:http://bytepointer.com/msvc/index.htm

最後可能是因為這個安裝畫面,所以 Visual Studio 從 1997 起算,算做 20 年:

Visual Studio 97 Install
Visual Studio 97 Install

來源:http://www.ironshay.com/?tag=/visual+studio

過去 30 年來,微軟開發工具一直陪伴我,將近我 2/3 的人生。Visual Studio 2017 ,歡迎你走入我未來的生命。

Categories: 電腦和網際網路, 嗜好 | 標籤: | 1 則迴響

在 WordPress.com 建立免費網站或網誌.

%d 位部落客按了讚: