2020/03/07

C# (12) ソリューションとプロジェクト

今回は .NET の C# や Visual Basic でプログラムを作成するときに出てくるソリューションとプロジェクトについて、実際に Small Basic オンライン (SBO) 1.0 でどうなっているのかを見ながら解説しようと思います。

Visual Studio にソリューション エクスプローラーというウィンドウがあります。これは smallbasic-editor リポジトリのルートにある SmallBasic.sln というファイルの中身を表しています。ソリューションは SBO 1.0 のように、システム全体を表しています。

Vs-solution-explorer-j

ソリューションの中は9つのプロジェクトに分かれています。例えば SmallBasic.Editor というプロジェクトの中をマウス右ボタンの「エクスプローラーでフォルダを開く」メニューで開いてみると、bin\Debug\netstandard2.0 というフォルダに SmallBasic.Editor.dll というダイナミックリンクライブラリ(実行形式のクラス ライブラリ)ができていることがわかります。プロジェクトは通常このように exe や dll などのビルド単位に作られます。

SBO 1.0 の場合、SmallBasic.Analyzers.dll, SmallBasic.Compiler.dll, SmallBasic.Client.dll, SmallBasic.Editor.dll, SmallBasic.Utilities.dll の5つの dll が作られていました。

SBO 1.0 の REAME.md によると、8つのプロジェクトについて説明があります。和訳すると、

  • SmallBasic.Compiler: プログラムを実行するために使われるコンパイラ/エンジン
  • SmallBasic.Utilities: 異なるプロジェクト間で共有されるヘルパーユーティリティ
  • SmallBasic.Analyzers: コードベースの品質管理を助ける C# アナライザー群
  • SmallBasic.Generators: コードベース全体で利用される C# や TypeScript のスニペットを自動生成するスクリプトのコレクション
  • SmallBasic.Client: クライアントの TypeScript, SASS や画像リソースをバンドルしたウェブパックプロジェクト
  • SmallBasic.Editor: エディターUIコンポーネントをレンダリングする Blazor アプリ
  • SmallBasic.Server: エディターのサービスを提供/デプロイ(展開)するのに使われる ASP サーバー
  • SmallBasic.Tests: コンパイラ/エンジンをテストする C# 単体テスト

となります。順番はソリューション エクスプローラーにある順に並べ替えました。

ソリューション エクスプローラーで見るとそれぞれのプロジェクトはフォルダが分けられていて、Backend, Build, Frontend, Tests の4つのフォルダのいずれかに格納されています。Backend はサーバー側のみで実行されるプロジェクト、Build は SBO 1.0 自体をビルドするときに使用されるプロジェクト、Frontend はクライアント側とやりとりしながら実行されるプロジェクト、Tests は(ビルド直後の)自動単体テストのためのプロジェクトと考えられます。

SmallBasic.Bridge というプロジェクトに関しては SBO 1.0 の README.md に説明がありませんでした。このプロジェクトは Small Basic デスクトップ (SBD) をこのソリューションで作成するときに使われるのではないかと思います。

以上のように、ソリューションはシステム全体、プロジェクトはビルド単位と覚えておくと理解しやすいと思います。

関連項目

 

| | コメント (0)

2019/03/01

C# (7) ビルドしてテスト

前回、ローカルフォルダのソースも更新されたので、今回はこれをビルド(コンパイル)し、テストします。

スタートページの「最近」というところにソリューションファイル「SmallBasic.sln」が表示されているので、これをクリックします。

Vs_open_solution

出力にエラーが出ますが、左下に「準備完了」が出るのを待ち、「スタートアップ プロジェクト」の欄に「SmallBasic.Editor」が選ばれた状態で、その右の緑の三角のある「IIS Express」ボタンを押します。

Vs_build

ビルドが完了すると Small Basic Online のエディタがブラウザ上に表示されます。このときの Visual Studio の画面は以下のようになります。

Vs_executing

これでビルドは完了です。ここからは実行環境でのテストになります。テストにも色々な手段がありますが今回は以前あった Issues (問題点)の再現テストを行います。

GitHub の sb/smallbasic-editor に登録した Issues を表示します。今回確認するのはすでにクローズしたものになるので、「Closed」を選んで #44~#47 を順に確認します。

#44 は単純に GraphicsWindow.DrawEllipse() で楕円を描きます。本来輪郭だけが描かれるはずが前回の版では黒く塗りつぶされていました。新しい版で試したところ、直っていませんでした。

Issue_44

この問題は Edge でのみ発生し、他のブラウザでは正常に表示されることが分かりました。原因は Edge が #00000000 を透明と認識しないことにあるようです。

#45 は GraphicsWindow.DrawText ()と Shapes.AddText() で文字の表示位置が違っていたのですが、これは修正されました。

#46, #47 は文字リテラル、変数名、 サブルーチン名、ラベル名に漢字を使うと文法エラーになっていました。これも修正されました。

テストの結果は以上です。過去の問題も記録が残っているので同様にテストすることができます。過去の問題の再現テスト(リグレッションテスト)を新しいリリースの度に行うことは重要です。一度直したところに別の修正を入れて昔の問題がまた発生するようなこともあるからです。

これまでの問題もほぼ修正されてきたので、『小学生からのプログラミング』掲載のプログラムの動作確認を続けていきたいと思います。

(つづく)

| | コメント (1) | トラックバック (0)

2019/02/27

C# (6) リモートリポジトリとの差分をプル

前回に引き続き、今度は Visual Studio を使ってリモートリポジトリの内容をローカルにプルします。これも第3回で簡単に説明しましたが、今回詳しく説明します。

スタートメニューから Visual Studio 2017 を選んで起動します。「表示」メニューから「チーム エクスプローラー」を選びます。

Vs_team_explorer_menu

チーム エクスプローラで第3回に作ったローカルリポジトリ Repos をダブルクリックします。

Vs_local_git_repository

「プロジェクト」の「同期」をクリックします。

Vs_sync

「入力方向のコミット」の「プル」をクリックします。

Vs_pull

「リポジトリはすでに最新の状態です。」と表示されればプルが完了です。

Vs_repo_updated

次回は最新のソースから Small Basic Online をビルドします。

(つづく)

| | コメント (1) | トラックバック (0)