跳到主要內容

發表文章

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

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

以下程式為例:
1: using System; 2: 3: namespace TestConsole 4: { 5: class Program 6: { 7: staticvoid Main(string[] args) 8: { 9: if (IntPtr.Size == 4) 10: { 11: Console.WriteLine("現在跑在x86機器上"); 12: } 13: elseif (IntPtr.Size == 8) 14: { 15: Console.WriteLine("現在跑在x64機器上"); 16: } 17: 18: Console.Read(); 19: } 20: } 21: } 印出的結果:
現在跑在x86機器上
但是我明明是64位元的機器啊~~



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



最近的文章

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>
<addkey="mynuget"value="http://nuget.mynuget/nuget" />
<addkey="nuget.org"value="https://api.nuget.org/v3/index.json"protocolVersion="3" />
</packageSources>
</configuration>
PS C:\ProgramData\nugget>

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

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