WindowTabs というオープンソースを改良してみたいのですがビルドができません。何か必要なものがありますか？


<https://github.com/mauricef/WindowTabs>

WindowTabsという以前はフリーソフトとしてかなり多くのサイトで紹介されていたソフトウェアを愛用しています。お金も払っていたのですが、いつのまにやらオープンソースになっていました。いくつか改良したい点があります。

起動時のAlignを右にしたいのと、ShrinkTabをデフォルトTrueにしたいとか、常にFlipさせておきたい(Windowの上に出るのではなく下に出したい)、というような結構簡単な改良をしたいのですが、そもそもVS2017ではビルドができていません。

なにか工夫などがあるのでしょうか？  
VSやC#には詳しくありませんので難しく感じています。

具体的なアドバイスができる方、教えていただけたらと思います。

あるいは誰かオプソで改良していってくれないかなと思います。アプリ終了時やGUIダイアログなどで上記のデフォルト設定を記録できたらいいのになと思っています。

すごくマニアックすぎる質問ですいません。




ビルドできる版を[Fork](https://github.com/payaneco/WindowTabs)しました。

既に[redgis](https://github.com/redgis/WindowTabs)さんが`VS2017/.NET
4.0`でコンパイルできるものをフォークしていました。  
それをベースに、日本語対応できるリソースを追加してF#を3.0に上げただけです。  
`Windows 10 64bit`で動作することを確認しましたが、質問にある機能追加は行っていません。

WtSetupは[WiX Toolset build
tools](http://wixtoolset.org/)を別途インストールしないとnugetだけではコンパイルが通りませんでした。  
インストーラーが必要な場合は`WiX Toolset build tools V3.11.1`をインストールしてください。

そもそも手元の環境ではWtSetup.msiを作っても正常動作しなかったので、exeさえあれば良いならばWtSetupをソリューションから除外する方が簡単です。




WindowTabsを使ったことがないので、ソースコードから読み取っただけの情報ですがまとめます。

### WtSetup

セットアッププロジェクトで`WindowTabs.msi`を生成します。  
このインストーラーに取り込まれるのは[`..\\WtProgram\\obj\\Release\\WindowTabs.exe`](https://github.com/mauricef/WindowTabs/blob/master/WtSetup/WtSetup.vdproj#L778)だけです。（なんで`bin`じゃなく`obj`なんだ…）

なお、出来上がった`WindowTabs.msi`を手直しするスクリプトがJavaScriptおよびVBSで記述されています。今はC#で記述できます。

### WtProgram

[F#言語](https://ja.wikipedia.org/wiki/F_Sharp)バージョン2.0のプロジェクトで`WindowTabs.exe`を生成します。  
このプロジェクトで参照されるのは配下の`*.fs`ファイルと、[この辺り](https://github.com/mauricef/WindowTabs/blob/ec083ee2bb03ddccff3cc7e78c5269a661036fa7/WtProgram/WtProgram.fsproj#L127-L149)の記述により以下の内容になります。

  * `Aga.Controls`
  * `FSharp.PowerPack`
  * `Interop.SHDocVw`
  * `Interop.Shell32`
  * `Newtonsoft.Json`
  * `Win32`

なお、F#コンパイラーには[`--staticlink`オプション](https://docs.microsoft.com/ja-
jp/dotnet/fsharp/language-reference/compiler-
options)があり、[この辺り](https://github.com/mauricef/WindowTabs/blob/ec083ee2bb03ddccff3cc7e78c5269a661036fa7/WtProgram/WtProgram.fsproj#L43)の設定で参照したDLLを全て`WindowTabs.exe`に取り込んでいます。

### Aga.Controls

[TreeViewAdv for
.Net](https://sourceforge.net/projects/treeviewadv/)から取得した`Aga.Controls.dll`で、`treeviewadv/`ディレクトリにソースコードも置かれています。

### FSharp.PowerPack

[F#
PowerPack](http://fsharppowerpack.codeplex.com)から取得したバイナリを開発マシンにインストールしておくことを想定しています。既に開発は止まっていますが[GitHub](https://github.com/fsprojects/zzarchive-
powerpack)に残っていたりします。また今は[NuGet](https://www.nuget.org/packages/FSPowerPack.Community/)で配布されており、コンパイル時に取得する仕組みが用意されています（当時はなかった）。

### Interop.SHDocVw

`Interop.SHDocVw.dll`は[Tlbimp.exe (タイプ ライブラリ
インポーター)](https://docs.microsoft.com/ja-jp/dotnet/framework/tools/tlbimp-exe-
type-library-importer)を用いて`SHDocVw.dll`から生成したメタデータです。

### Interop.Shell32

同様に`Interop.Shell32.dll`は`Shell32.dll`から生成したメタデータです。

### Newtonsoft.Json

[Json.NET](https://www.newtonsoft.com/json)から取得した`Newtonsoft.Json.dll`です。

### Win32

C#言語バージョン2.0くらいのプロジェクトで`Win32.dll`を生成します。

* * *

以下のディレクトリは私の解析が間違っていなければ使用されていない残骸です。

  * Settings
  * WtDesktop
  * WtGroup
  * WtInject
  * WtLauncher
  * treeviewadv

