2017/04/07

Console Application在64bit機器上卻以32bit執行?

可能有人有疑問, 我建置時我明明"方案平台"選擇的是"Any CPU", 但為什麼在64bit的機器上, 卻沒有 預設走64bit呢?

以下程式為例:

using System;

namespace TestConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            if (IntPtr.Size == 4)
            {
                Console.WriteLine("現在跑在x86機器上");
            }
            else if (IntPtr.Size == 8)
            {
                Console.WriteLine("現在跑在x64機器上");
            }

            Console.Read();
        }
    }
}

印出的結果:
現在跑在x86機器上

但是我明明是64位元的機器啊~~

原來, Visual Studio的組態設定上, 預設會將"建議使用32位元" 打勾, 建置時就變成以32位元執行了, 所以, 如果日後有新增新的 組態設定 (e.g. QA, Prod環境), 記得也要檢查這部份哦

2017/02/15

NuGet package source設定


建置Jenkins的時候, 如果有自建的NuGet Server, 在建置CI Job時會因為找不到NuGet Server而Build失敗, 通常我們會在Jekinkes上裝Visual Studio然後設定完NuGet的Package Source後, 再重新建置就會成功

但這裡有個方法可以解決這個問題

到Jenkins主機上, 在%ProgramData%\NuGet\下, 新增NuGetDefaults.config, 把自建的NuGet Server加進去就OK了

PS C:\ProgramData\nuget> Get-ChildItem .\NuGetDefaults.config | select fullname
FullName
--------
C:\ProgramData\nuget\NuGetDefaults.config
PS C:\ProgramData\nuget> cat .\NuGetDefaults.config
xml version="1.0" encoding="utf-8"?>
<configuration>
   <packageSources>
      <add key="mynuget" value="http://nuget.mynuget/nuget" />
      <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
   </packageSources>
</configuration>
PS C:\ProgramData\nugget>


Updated:

可以直接用 nuget command line 做設定

2017/02/07

Jenkins 權限設定災難復原



有時候在安裝Jenkins的過程中, 會發生設定 jenkins credentials時, 沒有注意到權限是否設定正確, 就把Anonymous的權限拿掉, 造成所有user都無法再進到管理介面的悲劇...

這時候, 有個簡單的處置辦法, 參考官方的文件: Disable security 的作法

1. 停止Jenkins Service
2. 到$JENKINS_HOME 目錄(通常是C:\Program Files (x86)\Jenkins)
3. 修改config.xml, 修改useSecurity為false. e.g. false
4. Restart Jenkins Service

就可以看到權限變成開放給所有人, 再重新把權限加回去即可

T-SQL 語法風格