發表文章

目前顯示的是 2017的文章

ng-controller動態載入

圖片
一般情況在使用ng-controller時,會宣告如下
目前有一個需求是MainController要動態從變數載入,來使用不同的Controller, 例如: ng-controller="vm.GetConroller() as vm" ps:以上程式不能執行。

關於Sql ~ 波浪字元

今天同事問EntityFramework在StartWith,Contain等方法所產生的SQL在結尾會有ESCAPE '~'  例: SELECT * FROM T WHERE Title LIKE 'foo%' ESCAPE '~'
查了相關文章後,只知ESCAPE是用來查詢資料內有含萬用字元,例: %_[]^等,但沒有關於"~"是要作什麼用的。 後來經測試,才知道"~"是代表所有的萬用字元,意思為本來你可能要使用ESCAPE '%_[^' 來查有這些符號的資料,而只要用ESCAPE '~' 即可 SELECT * FROM T WHERE Title LIKE 'foo%' ESCAPE '%_[]^' 等同 SELECT * FROM T WHERE Title LIKE 'foo%' ESCAPE '~'

Jenkins-參數化建置控制子流程

圖片
CI上有一組建置工作如下: 在日常的建置工作,只要01-Web建置完就會觸發02-Database及03-WebTest
需求 在建置完01-Web後,要控制是否建置另外兩項工作,如下四條建置線: 01-Web --> 02-Database -->03-WebTest (default)01-Web --> 02-Database01-Web --> 03-WebTest01-Web

Jenkins往遞參數到下一個工作

圖片
前言 有一個測試工作,若是由上游工作觸發需要等待個30秒,而手動觸發則不需要等待。
解決方案
1.上游工作使用Trigger parameterized build on other projects 本例設定一個名為"WAITING"的布林參數

RAM Disk 2017使用記錄

圖片
下載及使用教學 這裡可以下載使用到4G RAM的版本,官網最新只能用1G https://pcrookie.com/?p=891
個人目前使用到的設定
1.加快Visual Studio執行速度-更改Temporary ASP NET Files的位置
VisualStudio 及IIS machine.config 位置如下: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config
若你的VS是使用IIS Express C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config
打開machine.config 找到<System.Web>區段加入    <compilation   tempDirectory="R:\TemporaryASP.NETFiles\"/>
ps:建置的速度一樣,差別在Complier後第一次執行程式的速度

停用TypeScript Complie加快建置速度

圖片
前言
   目前的專案由於架構的關係,切分了很多TypeScript檔案,差不多是一個model,service,controller甚至連一個dto就是一個檔案。統計一下約1000個檔案左右。 由於切分了太多檔案,以致於每次在建置時因為TypeScript也會連帶建置而耗費很多時間,今天仔細給它用計時器來看,約要30秒左右...。
   在一般狀況下,撰寫完TypeScript時,按下Save就會輸出.js檔,而在建置時又會輸出一次,後者好像在某些狀況不一定需要。例如:本機的999個.ts皆已輸出.js ,而此次只有修改單一個typescript,所以就不需要在建置時全部產生一次。

Host file無法繫結IIS

圖片
問題  今天要在本機IIS Site模擬某一個DSN作測試,但一直得到錯誤ERR_CONNECTION_REFUSED

程式簽入VSTS觸發Jenkins建置工作

圖片
因應工作需求,將目前的建置工作改成程式一簽入後,馬上執行建置工作。
作法如下
1.Jenkins Job將選項打勾

ps:若沒看到此選項,代表沒安裝Team Foundation Server Plug-in

Unable to launch the IIS Express Web server

圖片
今天早上程式寫完後,按下F5執行網頁,出現無法執行IIS Express的錯誤....。以往遇到此錯誤訊息,通常都是重開VisualStudio,若再不行的話則要重開機才會好。  每次遇到都要重開需浪費不少時間,才能再重新進入工作狀況,為避免此狀況再來影響工作,決定藉此次來找解決方式。

Jenkins-PowerShell 發生例外時回報失敗

圖片
Jenkins Power Shell Plug In 1.3版後的更新,由於使用非互動的方式執行,若script發生例外,會直接Bypass視為成功。 https://wiki.jenkins.io/display/JENKINS/PowerShell+Plugin

當發生錯誤時,要視為建置失敗,則要另外加上判斷,如下:

IIS多個網站共用同一份程式

圖片
目前在運行的網站,因業務需求,獨出另一個網站及資料庫。在布署網站時會分別發佈到2個不同的資料夾。兩個資料夾的程式一模一樣,只差在web.config的ConnectionString不同。目前只有2個網站,布署工作還算簡單,未來若繼續擴增時,除了發行工作會越來越多,同步及除錯上的問題也是另一要考量的地方。
解決方式 將多個網站指向同一位置,此作法為同一程式目錄,但不使用目錄內web.config的ConnectionString,而是使用在IIS上所設定的。作法如下:

Jenkins Remote Build - 2

圖片
續上一篇Jenkins Remote Build,提到直接透過網址可以觸發工作,在這前提下是在網頁已登入Jenkins,以本文使用Http Request呼叫,會得到403錯誤。所以要透過其他App觸發,需要連驗證資訊要也一併傳入。以下用Http Reqeust 作說明。
1.先取得使用者的API Token

Jenkins Remote Build

圖片
前言
 同事提了一個需求,能否從其他App呼叫Jenkins來進行建置。查了一下,Jeknins確實有提供使用自訂token的方式透過http來觸發
使用方式
1.啟用安全性 若此項未設定,在第2步驟的Build Triggers會找不到 [遠端觸發建置] http://localhost:8080/configureSecurity/

VS2017 Unable to copy file到roslyn目錄

圖片
同事回報建置時會出現以下錯誤,無法將dll copy到bin的Roslyn目錄下

在我的電腦建置時,則不會有此問題。檢查一下兩邊的版本 26430.13 -->我的版本26430.15 -->同事的版本 將我的電腦升上去後,果然也出現此錯誤。

Jenkins - TFS 取得ChangeSet編號

圖片
部署工作的新需求,需要取得此次TFS最新版本的ChangeSet號碼作後續處理。本以為要自己下tfs command來取得。
tf changeset /latest /noprompt
後來參考TFS Plugin後,才知道在每次取得最新版本程式後,會輸出相關的環境變數,如下圖。

[Windows Container] 基本管理指令

圖片
一開始只有試玩如何建立、執行等指令,而事後要如何管理才是更重要的一環。本文針對已在運行的Container如何操作的基本指令 
列出所有container
 docker ps -a
-a
為包含已停用的container

[Windows Container] SQL Server

圖片
好一陣子沒玩Windows Container,今天剛好看到一篇介紹如何使用SQL Server Containers,除了跟著玩一篇, 也由於電腦重灌,順便將整個從頭到尾的安裝過程再跑一次。  1.Install Windows Container
打開Power Shell,執行如下 Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All Enable-WindowsOptionalFeature -Online -FeatureName containers -All
ps:Window10 要  14393.222 或更新版本再繼續,安裝完成時,要重新啟動電腦

[Debug] Entity Framework參數過長的錯誤

圖片
同事回報一個錯誤是使用者貼上一段文字,執行後,發生錯誤"String or binary data would be truncated"

Web API文件產生器-Swagger

圖片
關於Web API 如何產生說明文件,本篇針對內建的help及目前微軟也在使用的Swagger作介紹。

一.內建說明
Web API的專案範本,內建會在Area加入一個help area幫你產生基本的文件說明,如下
輸出xml

VS2017 Report Designer 佈署後不能執行

圖片
前言
前一篇提到 Local Report升上2017需要安裝Extension [Microsoft Rdlc Report Designer for Visual Studio],在本機測試沒有問題。 但佈署後在Runtime出現格式不符的錯誤。


檢查佈署後的報表,變成precomplier的內容...

由於是已編譯後的內容,而程式是透過指定LocalReport的實體路徑來載入報表檔,所以找到的報表是編譯後的內容,當然會出現格式不符的錯誤。

VS2017 Report Designer 問題排除

圖片
前言   專案升上Vs2017後,針對報表設計的一些問題排除記錄。
1.打開報表檔案後,無法以設計工具呈現,而是用XML Editor打開

解決方法 要另外安裝Extension [Microsoft Rdlc Report Designer for Visual Studio]

主控台應用程式的組態置換

圖片
目前有一Console應用程式在執行一些背景工作,在部署上切換測試及正式環境是件很麻煩的事,因連線及AppSetting會因不同主機更換,之前為了省工,還寫了動態載入外部組態的程式來達到目的....。今天剛好不小心瞄一篇相關的文章,可以在建置就切換config,才發現我作了一堆白工..=.=。以下為懺悔用的筆記文.....。

自動切換App.config 在App.config 新增Stage 設定,值=Debug


新增App.Release.config及App.Debug.config


在App.Release.config 新增Stage 設定,值=Release


Debug.config 保持空值,此檔案為必要檔案,因待會的轉換時以檢查此檔案是否存在。

Visual Studio 2017 .Net Core升級問題排除

圖片
昨天一早很興奮的安裝好Visual Studio 2017,在測試手頭上主要的專案在VS2017上建置及發行都無誤後,簽入TFS使用Jenkins作建置及發行,也都可以正常執行。不過下午升級另一個使用.NetCore開發的專案就沒那麼順利了。

問題一,Team Service 無法正常繫結
Vs2017捨棄了project.json檔,並改回副檔名.csproj的專案檔 ps:在Vs2015是.xproj,所以在開啟專案時會針對舊設定作升級動作。以下圖為例

升級後,project.json移除及副檔名變更



此動作,若在未繫結的狀態,可以正常升級,但若是在繫結的狀態下,升級後再打開,就會出現專案變成新增狀態,或是方案內的專案無法正常載入等。

.Net Core 透過Jenkins部署的問題排除

圖片
前一篇提到如何透過MsBuild及MsDeploy來部署,將相關指令搬到 Jenkins來執行後,出現了一些.NetCore才有的問題,例: project.lock.json is denied.。


20170309 後記,升上Vs2017就無以下問題
http://note.kimx.info/2017/03/visual-studio-2017-net-core.html

===============Vs2017 以下請忽略================

問題排除記錄
以下為在Jenkins建置時遇到問題及排除記錄。
1.project.fragment.lock.json及project.lock.json is denied.原因:在Jenkins取下來時,檔案是唯讀的,而package restore時,需要寫入該檔案

解決方式:使用.tfignore,不要簽入tfs



參考連結:

https://msdn.microsoft.com/zh-tw/library/ms245454.aspx
http://stackoverflow.com/questions/39169934/generate-dependency-fragment-file-task-failed
https://www.youtube.com/watch?v=BfKcTX8NxAQ

WinDbg Debug Tool安裝記錄

圖片
參考黑大最近一系列文後,自己個人的安裝備忘文

安裝WinDbg
安裝檔: https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit
進入網頁的下方,找到Window 10(WinDbg)


[MsDeploy] .Net Core部署

圖片
目前每天程式都是透過Jenkins執行Msbuild及MsDeploy來完成部署的工作。不過之前的發行方式,使用的是MsBuild建置成Package時所以產生的deploy.cmd如下圖。之前的文章也有介紹過相關使用方式。



問題
   前一陣子使用.net core開發了一個Web程式,剛開始都使用手動發行,沒什麼問題,現在要將發行的工作納入Jenkins,才知道,使用相同命令的MsBuild Command建置出來的package,沒有deploy.cmd可以使用......,所以必須使用MsDeploy.exe原生的指令發行。

使用MsDeploy.exe發行 1.使用MsBuild封裝成Package
msbuild.exe /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:configuration=Release /p:SkipInvalidConfigurations=true "D:\NetCoreMsdeploy\NetCoreMsdeploy.sln" 輸出結果如下


css debug 之找錯鑰匙記錄...

圖片
同事回報某支網頁程式的bootstrap 下拉式選單會因為太靠近底部而無法使用,如下圖

Local Repot-嵌入Barcode

圖片
目前專案內的報表在呈現Barcode時,所以使用的方式是用Image的External的屬性,透過http取得Barcode。例:http://www.barcodes4.me/barcode/c128a/00000001.png?IsTextDrawn=1


[Windows Container] ASP.NET 試玩

圖片
前一篇相同,針對一些小功能測試,例如:如何將發行的程式建置成image、連線到內部主機等..。不過環境改為如下,。
環境Windows Containerimage:aspnet (支援.net framework 4.6 and 3.5) Step by Step 1.建立.net framework web application,在Contoller撰寫資料庫連線

View,顯示連線狀態