2017年10月31日 星期二

[.Net]Dll明明有在,為什麼出現找不到DLL錯誤 - 一次搞懂如何處理Dll版本問題(Dll Hell)

image
圖片來源:https://pixabay.com/en/despair-alone-being-alone-archetype-513528/

當系統越來越模組化,大量library開始透過nuget方式組成的時候,開始會遇到一個情況,那就是Dll版本問題(Dll Hell)。

如果對於Dll版本問題沒有一些了解的情況下,常常會遇到明明Dll存在bin下面,但是還是出現找不到的錯誤訊息:

image
System.IO.FileLoadException: Could not load file or assembly 'Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference.

這篇將對於.Net如何處理Dll Hell的問題做一些介紹。


2017年10月21日 星期六

[.net framework 工程師看.net core][03]工程師的語言 C#

image
圖片來源:https://pixabay.com/en/annual-report-book-brochure-686343/

在上一篇介紹完了.Net Framework的概觀(起源.Net Framework) - 在這一篇將會介紹和.Net Framework一起誕生的語言:C#

將會了解到C#版本的歷史、主要版本之間的功能差異和.Net Compiler Platform (Roslyn) 帶來的差異


2017年10月18日 星期三

[.net framework 工程師看.net core][02]起源.Net Framework

image
圖片來源:https://pixabay.com/en/annual-report-book-brochure-686343/

在這一篇,將會從起源,介紹.Net Framework作為開始。

先了解.Net Framework到底包含了什麼,再來介紹一下版本和Runtime之間的關係,最後在介紹一下CLR如何和C#搭配然後整個run起來。

這篇結束之後,會對於整個.Net Framework有個基本的概念並且方便之後和.Net Core和Xamarin做個比對。


2017年10月15日 星期日

[.net framework工程師看.net core][01]開篇

image

作為.net 工程師來說,最近最夯的應該就是.net core 2.0的正式發佈。

如果你和我一樣,是一個從頭到尾只使用Windows並且以開發C# .net為主的工程師,那麼.net core最明顯的跨平台可能沒什麼吸引力,畢竟只用Windows還需要夸平台嗎?

那麼是否.net core就不重要了呢?是否應該花時間學習呢?在這個系列希望能夠給目前.net為主的工程師節省一些查資料的時間,並且了解.net core的重要性。


2017年10月13日 星期五

[.Net Core 與 .Net Standard 實戰教學][Lab][03-3].Net Standard 2.0能夠直接Reference .Net Framework Library

image
圖片來源:https://pixabay.com/en/workshop-rustic-hammer-wrench-tool-2608390/

透過上一個lab: 了解到了如何更容易評估把.net framework程式碼port到.net Standard之後,接下來的問題就是,可是有些第三方.net framework library沒有source code但是又要用怎麼辦?

在這個lab將會介紹.Net Standard 2.0帶來的一大優勢,能夠直接reference .net framework的library。將會使用一個2012的library:NQuery,主要目的是可以用sql語法來查詢資料。將會調整改成這種方式來查資料。

上個lab的最後成果的程式碼可以再github看到:https://github.com/alantsai-samples/2017-10-14-net-core-workshop

git標籤:lab3/1-port-net-standard-finish

兩種方式取得:

  1. 用git clone然後在checkout到lab3/1-port-net-standard-finish
  2. 從github release下載:下載鏈接

[.Net Core 與 .Net Standard 實戰教學][Lab][03-2]使用.NET API Portability分析API支援程度

image
圖片來源:https://pixabay.com/en/workshop-rustic-hammer-wrench-tool-2608390/

在上一個lab:[03-1]現有.Net Framework Lib 改成 .Net Standard 了解了如何把一個現行的.Net Framework邏輯移轉到Target .Net Standard以達到最大跨平台共用邏輯的需求。在操作的過程中有特意轉成.Net Standard 1.6來模擬不支援的api DataSet, 並且了解如何使用 Api Browser來查看api支援度。

不過,難道沒有工具能夠分析現行程式碼是否支援那些target嗎?

在這一個lab將會使用.NET API Portability來達到分析支援度的情況。

上個lab的最後成果的程式碼可以再github看到:https://github.com/alantsai-samples/2017-10-14-net-core-workshop

git標籤:lab3/1-port-net-standard-finish

兩種方式取得:

  1. 用git clone然後在checkout到lab3/1-port-net-standard-finish
  2. 從github release下載:下載鏈接

[.Net Core 與 .Net Standard 實戰教學][Lab][03-1]現有.Net Framework Lib 改成 .Net Standard

image
圖片來源:https://pixabay.com/en/workshop-rustic-hammer-wrench-tool-2608390/

在前兩個lab 2裡面([Lab2-1]了解Framework Dependent Deployment(FDD)執行(發佈)模式[Lab2-2]了解Self Contained Deployment(SCD)執行(發佈)模式)了解了.Net Core和.Net Framework 不同執行模式以後。

在lab 3將會切換到另外一個很重要的部分,.Net Standard 2.0的到來。

這個lab將會介紹如何移轉現有target .net Framework的程式改成.Net Standard以達到多runtime使用重複邏輯。

一般來說會先port test程式碼,在port實際的業務程式碼,不過做法都類似,以這個範例就直接port業務程式碼。

[.Net Core 與 .Net Standard 實戰教學][Lab][02-2]了解Self Contained Deployment(SCD)執行(發佈)模式

image
圖片來源:https://pixabay.com/en/workshop-rustic-hammer-wrench-tool-2608390/

在上一個Lab:了解Framework Dependent Deployment(FDD)執行(發佈)模式建立了一個.Net Core Console程式, 並且用發佈看產出的結果 - 最後得到的是FDD的執行模式。

在這一個lab將會沿用上一個lab的Solution接下去建立另外一種執行模式,Self Contained Deployment (SCD)。

上個lab的最後成果的程式碼可以再github看到:https://github.com/alantsai-samples/2017-10-14-net-core-workshop

git標籤:lab2/1-fdd-finish

兩種方式取得:

  1. 用git clone然後在checkout到lab2/1-fdd-finish
  2. 從github release下載:下載鏈接

[.Net Core 與 .Net Standard 實戰教學][Lab][02-1]了解Framework Dependent Deployment(FDD)執行(發佈)模式

image
圖片來源:https://pixabay.com/en/workshop-rustic-hammer-wrench-tool-2608390/

在上個Lab:[01]準備環境準備好環境之後,接下來就是建立一個.Net Core Console的Hello World範例程式。

建立出來之後,了解.Net Core在發佈出來的成果為 Framework Dependent Deployment(FDD)類型並且了解這個和以前.Net Framework的有何不同。


[.Net Core 與 .Net Standard 實戰教學][Lab][01]準備環境

image
圖片來源:https://pixabay.com/en/workshop-rustic-hammer-wrench-tool-2608390/

要開始開發.Net Core程式之前,一定需要先把環境準備好。

這篇lab主要介紹如何以VS 2017為主的開發模式來準備需要的環境。