「[[Open棟梁 wiki>https://opentouryo.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>リリース情報]]
-戻る
--[[NuGet対応]]
--[[リリース情報]]
--[[リリース・エンジニアリング]]

*目次 [#p14e365a]
#contents

*概要 [#sa0c2baa]
-[[v01-72>リリース情報#g5e9bdde]]から、[[NuGet利用>#mda95a7a]]を開始した。これによりビルドシステムは大幅に改善した。
-[[v02-x0>リリース情報#j62bae77]]から、[[NuGet登録>#l902543f]]を行い、更なるビルドシステムの改善を図る。

**改善点 [#ved121d6]
-[[v01-72>リリース情報#g5e9bdde]]から、[[NuGet利用>#mda95a7a]]を開始した。~
これによりビルド・システムは大幅に改善した。

-[[v02-00>リリース情報#j62bae77]]から、[[ASP.NET の Modernization>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20%E3%81%AE%20Modernization]]により、~
[[NuGet利用>#l902543f]]を大幅に拡大し、更なるビルド・システムの改善を図った。

-[[v02-10>リリース情報#j62bae77]]から、[[NuGet登録>#l902543f]]を行い、
--更なるビルド・システムの改善と、
--リポジトリ内のソース・ファイルの重複の軽減を図る。

**参考 [#m3b342a5]
-NuGet Gallery | Packages matching Touryo~
https://www.nuget.org/packages?q=Touryo

*NuGet利用 [#mda95a7a]
NuGet利用を開始したことにより、ビルドシステムは大幅に改善した。
NuGet利用を開始したことにより、ビルド・システムは大幅に改善した。

**[[v01-72>リリース情報#g5e9bdde]]から、 [#m04b1223]
**バージョン [#v4ccc4a2]
***[[v01-72>リリース情報#g5e9bdde]]から、 [#m04b1223]
-log4net や DotNetZip などのライブラリ管理を NuGet に変更。
-これにより、今まで別途ダウンロードする必要のあったDLLをNuGetから取得可能になった。

**[[v02-00>リリース情報#i11149ce]]から、 [#y5dd5d4e]
***[[v02-00>リリース情報#i11149ce]]から、 [#y5dd5d4e]
-[[ASP.NET Web Optimization>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20%E3%81%AE%20Modernization]]を行ったため、多数のコンポーネントをNuGet から追加した。

-また、[[Nuget使用時に「error MSB3086 Task could not find AL.exe」が発生>https://techinfoofmicrosofttech.osscons.jp/index.php?Nuget%E4%BD%BF%E7%94%A8%E6%99%82%E3%81%AB%E3%80%8Cerror%20MSB3086%20Task%20could%20not%20find%20AL.exe%E3%80%8D%E3%81%8C%E7%99%BA%E7%94%9F]]し、~
コレを解決するために、NuGet 2.7 以降の自動復元への移行を行った。

***[[v02-10>リリース情報#j62bae77]]から、 [#waae1717]
[[カスタマイズ可能レイヤ>ベースクラス2]]以外のライブラリを[[NuGet登録>#l902543f]]を行い、

-更なるビルド・システムの改善と、
-リポジトリ内のソース・ファイルの重複の軽減を図る。

※ TFMは、net46、net47

***[[v02-20>リリース情報#q420bd70]]から、 [#cf451583]
以下の対応が行われた。
-[[デバッグ用のシンボル・パッケージ格納>NuGet導入後のデバッグ方法#ue5d782f]]
-パッケージの作成・登録用のソリューション・バッチを準備

※ TFMに、net452を追加。

***[[v02-30>リリース情報#b4c98491]]から、 [#tfc06b91]
NuGetパッケージのバージョンとDLLファイルのバージョンを一致させた。

***[[v02-40>リリース情報#r49eb536]]から、 [#tbc08996]
nuspecファイルにdependency -> groupsタグを導入

※ TFMに、netstandard2.0を追加。

***[[v02-50>リリース情報#j1b29d87]]から、 [#f76395d4]
特になし。

※ TFMに、net48、netstandard2.1(≒ netcoreapp3.0)を追加。

***[[v02-60>リリース情報#p486eaa7]]から、 [#j16d00fd]
特になし。

**バージョンアップ [#r140a0d9]
-バージョンアップ(バージョン変更)は以下から行うことができる。
-参考:[[NuGet を使用したパッケージ管理 - バージョンアップ(バージョン変更)方法>https://techinfoofmicrosofttech.osscons.jp/index.php?NuGet%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E7%AE%A1%E7%90%86]]

***GUI操作 [#d202d994]
Visual StudioのGUIから操作。

***CUI操作 [#sed1f562]
Update-PackageなどのCUIで操作。~
(PowerShellだが、Visual Studioパッケージ マネージャー コンソールから操作。)

**参考 [#qc4279d6]

*NuGet登録 [#l902543f]
[[v02-x0>リリース情報#j62bae77]]から、[[NuGet登録>#l902543f]]を行い、更なるビルドシステムの改善を図る。

**対象 [#t3904a3d]
***Public名前空間 [#zff034a6]
-Public.dll
-OpenTouryo.Public.dll
-OpenTouryo.Public.Security.dll

-その他、各種Dam*.dll
--NuGetにdllが''適切に''登録されているものに限る
---DamPstGrS
---DamMySQL
---DamManagedOdp
---OpenTouryo.DamManagedOdp
---OpenTouryo.DamMySQL
---OpenTouryo.DamPstGrS

--これにより、テンプレート版も既定で以下のDBをサポートできるようになる。
---SQL Server
---ODBC, OLEDB
---Oracle
---MySQL
---PostgreSQL
---MySQL
---Oracle

***Framework名前空間 [#v5069030]
-Framework.dll
-OpenTouryo.Framework.dll
-OpenTouryo.Framework.RichClient.dll

**構成の変更 [#b311f203]

***本体(母体) [#a8abbd84]
-実装 ---> テストの容易性を維持するために本体(母体)側の基本的なビルドシステムは現行を維持する。
Public名前空間、Framework名前空間にのみ適用される。

-実装 ---> テストの容易性を維持するために本体(母体)側の基本的なビルド・システムは現行を維持する。
-しかし、NuGetパッケージに登録するためのTarget Framework毎のビルドが可能になるようにする。
--[[Target Framework>https://docs.microsoft.com/ja-jp/nuget/schema/target-frameworks#supported-frameworks]]として、以下をサポートする。
---%%net35%%(.NET Standard がサポートしている .NET Framework は 4.5 以上)
---net452
---net46
---net47
---%%net35%%~
.NET Standard がサポートしている .NET Framework は 4.5 以上
---net452~
targetFrameworkをバージョン・ダウンして、利用可能。
---net46~
VS2015テンプレートが既定で使用する。
---net47~
VS2017テンプレートが既定で使用する。
---netstandard2.0~
VS2017テンプレートのnetcoreappが既定で使用する。
---net48~
VS2019テンプレートが既定で使用する。
---netstandard2.1~
VS2019テンプレートのnetcoreappが既定で使用する。

--プロジェクト・ファイル(*.csproj)をTarget Framework毎に準備する。
---プロジェクト・ファイル(*.csproj)の名称付与基準は、「*{framework name}[{version}].csproj」とする。
---プロジェクト・ファイル(*.csproj)では、以下のようなビルド出力を行う(src側のフォルダ構成を参考にする)。~
以下は、[[*.nuspecファイル>https://techinfoofmicrosofttech.osscons.jp/index.php?NuGet%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%81%AE%E9%96%8B%E7%99%BA%E3%81%A8%E5%85%AC%E9%96%8B]]のfilesセクションの定義例。
 <files>
   <file src="bin\Release\net46\MyAssembly.dll" target="lib\net46" />
   <file src="bin\Release\net461\MyAssembly.dll" target="lib\net461" />    
   <file src="bin\Release\uap\MyAssembly.dll" target="lib\uap" />    
   <file src="bin\Release\netcore\MyAssembly.dll" target="lib\netcore" />
 </files>

--Target Framework毎のプロジェクト・ファイル(*.csproj)を纏めるソリューション・ファイル(*.sln)を準備する。
---ソリューション・ファイル(*.sln)の名称付与基準は、「*{framework name}[{version}].sln」とする。
--ビルドバッチ(*.bat)では全てのTarget Framework毎のソリューション・ファイル(*.sln)をビルドする。
-このため、本体(母体)側のVisual Studioのバージョンを将来的に最新化する。
-

-本体(母体)側のVisual Studioのバージョン
--本体(母体)側は、最古のバージョンに固定するが、
--Public名前空間、Framework名前空間については、
---ソリューション・ファイル(*.sln)
---プロジェクト・ファイル(*.csproj)

>>を複数用意してmulti-version化する。

***テンプレート [#f6b03dfc]
-最も古いVisual Studioのバージョンはこちらで保持する。
Public名前空間、Framework名前空間が、Nuget化される。

-[[対象となる、Public名前空間、Framework名前空間のライブラリ>#t3904a3d]]の参照設定をNuGetに置き換える。

-以下のカスタマイズ可能レイヤ、テンプレート部分は、~
root_VS20XXのテンプレートに重複して保持する。

--カスタマイズ可能レイヤ
---Business名前空間
---各種カスタムコントロール
---各種サービスインターフェイス
--- , etc.

--テンプレート部分
---Web系
---C/S系
---バッチ系
--- , etc.

-カスタマイズ可能レイヤ、テンプレート部分をメンテナンスする場合、
--最も古いVisual Studioのバージョンを使用したテンプレートでメンテナンスをする。
--そして、新しいVisual Studioのバージョンのテンプレート、本体(母体)にマージを行う。
**.NET Standard対応 [#l070e9eb]
-Public名前空間から、.NET Standardに対応可能なクラスライブラリを抽出、~
Standard名前空間のStandard.dllとして、NuGetパッケージに登録する。

**nuspecファイル [#ifcb5f31]
以下にnuspecファイルのコンテンツの方向性を纏める。
-このライブラリは、Linuxや、Win10 IoT Core上で動作する~
プログラム開発でユーティリティとして利用されることを想定する。

|#|要素|内容|h
|1|id|OpenTouryo.Public, etc.|
|2|title|Open棟梁 Public namespace, etc.|
|3|version|・02-00 -> 2.0.0&br;・02-10 - > 2.1.0&br;・α・β -> [[こちら>https://techinfoofmicrosofttech.osscons.jp/index.php?NuGet%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%81%AE%E9%96%8B%E7%99%BA%E3%81%A8%E5%85%AC%E9%96%8B#r8c14f07]]|
|4|authors|OSS Consortium .net subcommittee(※ comma 区切り)|
|5|owners|daisukenishino77(※ comma 区切り)|
|6|projectUrl|https://github.com/OpenTouryoProject|
|7|licenseUrl|https://github.com/OpenTouryoProject/OpenTouryo/blob/master/license/LICENSE.txt|
|8|iconUrl|64 * 64.icoファイルを別途準備してリンク&br;https://jyn.jp/iconfile_how_to_create/#i-5|
|9|releaseNotes|https://github.com/OpenTouryoProject/OpenTouryo/releases|
|10|requireLicenseAcceptance|true (エンプラ風)|
|11|tags|OpenTouryo その他の依存関係パッケージのtitle(※ space 区切り)|
|12|description|詳細用 説明文|
|13|summary|一覧用 説明文|
|14|files - file|[[下記参照>#r0e62132]]|
|15|contentFiles - file|該当無し|
|16|frameworkAssemblies - frameworkAssembly|.NET Frameworkアセンブリへの参照だが、テンプレート・プロジェクト経由の利用なので必須ではない。|
|17|dependencies - dependency|NuGetパッケージへの参照だが、テンプレート・プロジェクト経由の利用なので必須ではない。|
*参考 [#maff7024]

***files [#r0e62132]
**[[NuGetパッケージの作成手順]] [#b582cafd]

-ワイルドカードを使用して、Localized resource assembly(Localized satellite assembly)を同梱する。
-基本的に、プロジェクト出力の一式を同梱するようにする。
**[[NuGet導入後のデバッグ方法]] [#sed1db0f]

 <files>
   <file src="\bin\Release\net452\**" target="lib\net452" />
   <file src="\bin\Release\net46\**" target="lib\net46" />
   <file src="\bin\Release\net47\**" target="lib\net47" />
 </files>
**[[NuGetの依存関係パッケージのポリシー]] [#ac57d7e2]

**カスタマイズ [#ref774bb]
Public名前空間、Framework名前空間をカスタマイズが必要になった場合は、~
[[本体(母体)>#a8abbd84]]側からソースコードを取出してローカルでビルド・参照設定を行う。
**[[NuGetからローカルに切り替える。]] [#m217aabe]

*LicenseのSub Component表記の変更 [#re6a7d96]
**nuspecファイル [#se646086]

**基本方針 [#m98a242e]
Sub ComponentはNuGet化されているので、~
NuGetの packages.configをリンクする。
***テンプレート [#l6e77260]
https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/NuGet/template.nuspec

ここで、利用者各位、ライセンスを確認する。
>★ は必須入力

***Frameworksフォルダ以下のpackages.config [#nac6483b]
-https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/C%23/Frameworks/Infrastructure/Public/packages.config
--https://github.com/OpenTouryoProject/OpenTouryo/tree/develop/root/programs/C%23/Frameworks/Infrastructure/Public/Db/DamOraOdp/packages.config
--https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/C%23/Frameworks/Infrastructure/Public/Db/DamPstGrS/packages.config
--https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/C%23/Frameworks/Infrastructure/Public/Db/DamMySQL/packages.config
--https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/C%23/Frameworks/Infrastructure/Public/Db/DamSqlDbWithMultiShard/packages.config
***共通部品とフレームワーク [#uaf034ae]
-Public~
https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/NuGet/Public.nuspec

-https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/C%23/Frameworks/Infrastructure/Framework/packages.config
-https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/C%23/Frameworks/Infrastructure/Business/packages.config
-https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/C%23/Frameworks/Tools/DeployZipPackWithHTTP/packages.config
-Framework~
--https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/NuGet/Framework.nuspec
--https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/NuGet/Framework.RichClient.nuspec

***Samplesフォルダ以下のpackages.config [#s239d856]
-https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/C%23/Samples/WebApp_sample/ProjectX_sample/packages.config
-https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/C%23/Samples/WebApp_sample/MVC_Sample/MVC_Sample/packages.config
-https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/C%23/Samples/WebApp_sample/SPA_Sample/SPA_Sample/packages.config
-https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/C%23/Samples/UWP_sample/UWP_Sample.Html/packages.config
-DataAccess~
--DamManagedOdp~
https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/NuGet/DamManagedOdp.nuspec
--DamPstGrS~
https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/NuGet/DamPstGrS.nuspec
--DamMySQL~
https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/NuGet/DamMySQL.nuspec

**分かり易くする。 [#m7216c3e]
しかし、これだと解り難いので以下のように対応方法を選り分ける。

***Frameworksフォルダ以下 [#ka298482]
「/root/programs/C%23/Frameworks」以下のpackages.configは、
-Sub ComponentをDISTINCT(重複を削除)してComponent名を列挙する。
-前提(log4netなど)とオプション(ADO.NETデータプロバイダなど)に分ける。

***Samplesフォルダ以下 [#iff3b451]
「/root/programs/C%23/Frameworks/Samples」以下のpackages.configは、~
リンクするだけにする(特にASP.NET系のライブラリが色々と多すぎるので)。

*.NET Standard [#l070e9eb]
-Public名前空間から、.NET Standardに対応可能なクラスライブラリを抽出、~
Standard名前空間のStandard.dllとして、NuGetパッケージに登録する。

-このライブラリは、Linuxや、Win10 IoT Core上で動作する~
プログラム開発でユーティリティとして利用されることを想定する。

*参考 [#maff7024]
**NuGetについて [#od5f2a1e]
***[[NuGet - マイクロソフト系技術情報 Wiki>https://techinfoofmicrosofttech.osscons.jp/index.php?NuGet]] [#z83884b2]

-[[NuGet を使用したパッケージ管理>https://techinfoofmicrosofttech.osscons.jp/index.php?NuGet%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E7%AE%A1%E7%90%86]]

-[[NuGetパッケージの開発と公開>https://techinfoofmicrosofttech.osscons.jp/index.php?NuGet%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%81%AE%E9%96%8B%E7%99%BA%E3%81%A8%E5%85%AC%E9%96%8B]]

-,etc.

**.NET Framework のバージョン [#ydd0f328]
-.NETバージョンアップ - マイクロソフト系技術情報 Wiki > .NET Framework のバージョン~
https://techinfoofmicrosofttech.osscons.jp/index.php?.NET%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%A2%E3%83%83%E3%83%97#kc9b3965


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS