續上篇 https://dotblogs.com.tw/yc421206/2017/04/05/tfs_build_vnext_sandcastle_generate_live_document
我們已經自動化產生 API 說明文件了,若程式碼裡面有用到 Code Contract 還需要一些動作才能自動產生 Code Contract 的說明文件
為什麼要用 Code Contract?
如何使用 Code Contract
- .NET 4.0 New Feature - 程式碼合約(Code Contracts) (一) 概念與簡介
- .NET 4.0 New Feature - 程式碼合約(Code Contracts) (二) 三大合約
- .NET 4.0 New Feature - 程式碼合約(Code Contracts) (三) Contract.Assert & Contract.Assume
- .NET 4.0 New Feature - 程式碼合約(Code Contracts) (四) Contract.ForAll & Contract.Exists
- [心智筆記]程式碼合約(Code Contracts)
續上篇
- https://dotblogs.com.tw/yc421206/2017/04/05/tfs_build_vnext_sandcastle_generate_live_document
- https://dotblogs.com.tw/yc421206/2017/04/01/tfs2017_build_agent_without_install_vs2015_vs2017
- https://dotblogs.com.tw/yc421206/2017/03/30/tfs2015_build_agent_without_install_vs2015
開發環境
- Windows Server 2016
- SQL 2016 Devloper SP1
- TFS 2017 Update1
- VS 2017 Update1
- VS 2015 Update3
前置安裝
- 下載安裝 Sandcastle
- 安裝 .NET Target
- 安裝 Agents for Visual Studio 2017
- 安裝 Build Tools for Visual Studio 2017
- 安裝 Agents for Microsoft Visual Studio 2015
- 安裝 Microsoft Build Tools 2015
本文連結
- #下載安裝 Code Contract at TFS and Client
- #Code Contracts at VS2015
- #範例程式碼
- #Build vNext via Visual Studio 2015
- #Build vNext via Visual Studio 2017
- #結果
步驟
下載安裝 Code Contract at TFS and Client
下面位置擇一
Github
https://github.com/Microsoft/CodeContracts/releases
Nuget(路徑會跟預設的不一樣)
https://www.nuget.org/packages/DotNet.Contracts
MarketPlace
https://marketplace.visualstudio.com/items?itemName=RiSEResearchinSoftwareEngineering.CodeContractsforNET
我從 MarketPlace 下載,TFS 跟 Client (不支援 VS2017) 都要安裝
安裝路徑:C:\Program Files (x86)\Microsoft\Contracts
Code Contracts at VS2015
產生 Contracts 的文檔
範例程式碼
/// <summary>
/// Class Order.
/// </summary>
public class Order
{
/// <summary>
/// 新增一筆訂單
/// </summary>
/// <param name="orderId">The source.</param>
public void AddOneOrder(string orderId)
{
Contract.Requires<ArgumentNullException>(!string.IsNullOrWhiteSpace(orderId), "orderId");
Contract.Ensures(orderId=="yao");
}
/// <summary>
/// Tests the specified array.
/// </summary>
/// <param name="orderIds">The order ids.</param>
/// <param name="orderId">The order identifier.</param>
/// <returns>List<System.String>.</returns>
public List<string> AddOneOrder(List<string> orderIds, string orderId)
{
Contract.Requires<ArgumentNullException>(orderIds != null, "orderIds");
Contract.Requires<ArgumentNullException>(!string.IsNullOrWhiteSpace(orderId), "orderId");
Contract.Ensures(orderIds.Count == Contract.OldValue(orderIds.Count) + 1);
orderIds.Add(orderId);
return orderIds;
}
}
Build vNext via Visual Studio 2015
Visual Studio Version:Visual Studio 2015
這樣就能建置成功
Build vNext via Visual Studio 2017
Code Contract 不支援 VS 2017,相同的專案用VS 2017 開起來應該會得到下圖錯誤
解法就是在 TFS 2017 跟 Client 的 C:\Program Files (x86)\Microsoft\Contracts\MsBuild 目錄下,複製目錄 14.0 ,改成 15.0
結果
完成之後,就能看到說明文件上面有 Contracts 的說明文檔
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET