65679


Visual Studio 2019 で C#のソリューションを作成しています。  
ソリューションには2つのプロジェクトがあり、main.exeとsub.dllとします。

VS上のプロジェクトの構成としてはsub.dllはmain.exeのプロジェクトを参照しており、  
プログラムの実装上はmain.exeはsub.dllをリフレクションで呼び出します。  
sub.dllをビルドしたときmain.exeと同じディレクトリに配置するようにプロジェクトのプロパティを設定しています。

実際には他にも多くのプロジェクトがあり、既存ソースの変更を最小限にするため、この構成自体を変更することは出来ません。

ここまでは正常に動作していることを確認出来ました。

main.exeをビルドしたときsub.dllに変更があっても依存先では無いため自動ではビルドされません。  
依存先に設定しようとしてもsub.dllがmain.exeを参照しているため「この依存関係は循環参照を発生させるため、追加できません。」というメッセージが表示されます。

main.exeをビルド/実行するとき依存先に設定されていないsub.dllプロジェクトを(変更があったときに)自動でビルドさせるためにはどのような設定をすれば良いでしょうか。


CC BY-SA 4.0
2020-04-15T09:53:11.423
65645
2020-04-16T09:21:23.497
6157
question
c# visual-studio
Visual Studio 2019でプロジェクトをビルドするとき依存先に設定されていないプロジェクトも自動でビルドさせたい。


main.exeをビルドした際には、sub.dllの変更の有無に関わらずmain.exeが更新されているわけですからsub.dllのビルドは必須です。であれば、最初からsub.dllをビルドすれば解決しますでしょうか？

もしくは[バッチビルド](https://docs.microsoft.com/ja-jp/visualstudio/ide/how-to-build-
multiple-configurations-
simultaneously?view=vs-2019)でmain.exeとsub.dllを指定する方法もあります。

しかし、根本的には矛盾した依存関係を解消するべきではないでしょうか。依存関係のある部分をインターフェースとして定義し、main.exeとsub.dllはインターフェースを介してアクセスすることで、正しい依存関係を構築できます。この場合はmain.exeがリフレクションを使用する必要もなくなります。


CC BY-SA 4.0
2020-04-15T10:46:21.407
65648
2020-04-16T01:30:07.623
2020-04-16T01:30:07.623
4236
4236
65645
answer


sub を参照するダミープログラムを作り、ソリューションのマルチスタートアッププロジェクトで ダミーと main を両方起動する、というのはどうでしょう。

F5 を押すと ダミーと main のすべての依存先が最新にビルドされ、そのあとダミーが起動するが即終了し、main
のデバッグが可能になる、という寸法です。


CC BY-SA 4.0
2020-04-16T09:21:23.497
65679
2020-04-16T09:21:23.497
20885
65645
answer