星期一, 5月 27, 2013

查詢 .Net 組件的 Public Key Token

sn.exe -T assembly
至於 sn 這個強式名稱工具的所在位置,請參考我另一篇所提到的 SDK 路徑。

星期四, 5月 23, 2013

Visual Studio 2012 MVC4 Web API 錯誤處理

  1. 由繼承 ApiController 的子類別拋出 System.Web.Http.HttpResponseException。
  2. 假設用戶端由 jQuery 處理 ajax,像以下的程式片段:
  3. statusCode: {
    400: function() {
    // do something
    },
    401: function() {
    // do something
    }
    }
    或這樣處理也可以
    error: function (jqXHR, textStatus, errorThrown) {
    // jqXHR.status, errorThrown
    }

星期四, 5月 16, 2013

用 Visual Studio 開發 Web 之前就要準備的 log 機制

  1. 先由套件管理抓 Common.Logging 2.1.2 並設為專案參考。
  2. Web.config 新增如下的部份,注意:TraceAppender 會讓記錄往開發工具的 Output 送。
  3. 要記 log 的各類別必須有 private Common.Logging.ILog log = Common.Logging.LogManager.GetCurrentClassLogger();
  4. 真的要記 log 的程式是 log.Info("xxx");
<?xml version="1.0"?>
<configuration>
  <configSections>
    <sectionGroup name="common">
      <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
    </sectionGroup>
  </configSections>
  <common>
    <logging>
      <factoryAdapter type="Common.Logging.Simple.TraceLoggerFactoryAdapter, Common.Logging">
        <arg key="level" value="INFO"/>
      </factoryAdapter>
    </logging>
  </common>
  ...
</configuration>

星期三, 5月 15, 2013

在 Visual Studio 2012 MVC 4 專案,以最小修改納入 Spring.NET

  1. 新建專案,範本選「ASP.NET MVC 4 Web Application」,專案名稱與方案名稱都一樣是 SpringMvc4,如此一來,專案預設的命名空間與組件名稱也會一樣。較細的範本種類,選預設「Internet Application」即可。
  2. 在 HomeController.cs 增加 protected string Message { get; set; },修改 Index() 方法中 ViewBag.Message = Message;
  3. TOOLS -> Library Package Manager -> Manage NuGet Packages for Solution... 下載 Spring.Web.Mvc4(如果搜尋不到,可能是範圍的關係,要從 Stable Only 改成 Include Prerelease)。
  4. 修改 Global.asax.cs,繼承 Spring.Web.Mvc.SpringMvcApplication。
  5. 在 Web.config 調整 Common.Logging 的 bindingRedirect: 0.0.0.0-2.1.1.0 -> 1.2.0.0,同時也要增加:

完成!請看首頁是否有來自於設定檔注入的字串呢?

[2015/11/29 補充]
Visual Studio 2015 + Spring.Web.Mvc5 大致上依然適用,而且在第 3, 5 點都有改進了。

星期二, 5月 14, 2013

組件版本重導(Redirecting Assembly Versions)

當被參考的組件發佈新版,上層的組件或應用程式重新編譯再測試是比較正確的做法。但實務上有時會遭遇困難,應變的方法有二:
  • 由組件發行者發佈 Publisher Policy 部署在呼叫端
  • 由組件呼叫端編寫 Configuration
其實這兩者都採用一致的 XML 語法,官網相關說明在,幸好微軟沒有在這個問題上進一步折磨我們開發者。

附帶一提:這裏談的是強式名稱簽署的組件,未簽署的組件版本不重要。

在 Visual Studio 2012 Express 曾有一個 Bug:若在測試專案放 app.config 是沒用的,在 Update 1 以後悄悄地解決了,所以「要跟就得跟緊」。

.NET Framework 4.0 的一些改變

  • GAC
    • 3.5 %WinDir%\assembly
    • 4.0 %WinDir%\Microsoft.NET\assembly
  • SDK
    • 3.5 %ProgramFiles(X86)%\Microsoft SDKs\Windows\v7.0A\bin
    • 4.0 %ProgramFiles(X86)%\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools