2017-06-07 16 views
-1

をコピーしていない私は2つのプロジェクトとC#ソリューション(Visual Studioの2017)はB、exeファイルにコンパイルの両方を言うことができます持っています。プロジェクトはプロジェクトに依存しますのexeですが、プロジェクトへの依存性はBですがこれを解決します。ただし、ビルド時にexeファイルは自動的にコピーされません。のVisual Studioプロジェクトの依存関係は、exeファイル

exeでは依存関係は機能しませんか?ポストビルドのステップを作る唯一のソリューションですか?

+2

なぜ両方のアプリケーションから参照できるクラスライブラリに必要な機能を追加するのではなく、2つのexeをビルドしていますか? – mason

+0

@masonおそらく、彼は個別にオンデマンドで実行したいと思うかもしれないので、2つの別々のexeファイルを望んでいますか? – pitersmx

+0

@pitersmx AFAICT、masonの提案にはまだ2つのexeファイルがありましたが、両方のexeファイルが参照する3つ目のdllファイルがあります。 – AndyJ

答えて

1

私はあなたがビルド後のイベントをしたいと思います。

プロジェクトBがプロジェクトAより前にビルドされていることが重要なので、プロジェクト依存関係は既に設定されているようですが、プロジェクトBのプロジェクト依存関係をプロジェクトAに追加する方法がありますそれ。

ここではプロジェクトの依存関係を削除/追加するためのドキュメントです:プロジェクトAではhttps://msdn.microsoft.com/en-us/library/et61xzb3.aspx

あなたはプロジェクトBのexeファイルをコピーしますポストビルドイベントを追加することができます。

  1. プロジェクトAを右クリックし、[プロパティ]を選択します。
  2. [イベントの作成]タブに変更します。
  3. は、コマンドを追加します。copy "FromPath" "ToPath"

copyコマンドのドキュメントはここにある:https://technet.microsoft.com/en-gb/library/bb490886.aspx?f=255&MSPPError=-2147217396

あなたが「編集後のビルド」をクリックすると、あなたがボタンを持っているミニエディタを取得します「マクロ」とラベル付けされています。

「マクロ」ボタンをクリックすると、置換文字列を$(foo)の形式で挿入することができます。

これらのマクロを使用すると、プロジェクトフォルダやソリューションフォルダなどを取得できるため、適切な場所を指すパスを簡単に作成できます。

ここでビルドイベントに関するいくつかのドキュメントです:https://docs.microsoft.com/en-us/visualstudio/ide/how-to-specify-build-events-csharp

は、ここでビルドイベントプロパティページにいくつかの(安っぽい)のドキュメントです:https://docs.microsoft.com/en-us/visualstudio/ide/reference/build-events-page-project-designer-csharp

ここではマクロにいくつかの(便利な)ドキュメントです:https://msdn.microsoft.com/en-us/library/c02as0cs.aspx

+0

プロジェクトへの参照を追加したソリューションが機能し、ポストビルドのステップが回避されます。 –

+1

これを参照として追加すると、他にも副作用があります。あるプロジェクトのコードは、他のプロジェクトでもアクセス可能です。これはおそらく問題ではありませんが、少し混乱するかもしれません。もう1つの問題は、プロジェクトが.NETプロジェクトでなければならず、.netフレームワークのバージョンと種類が互換性があることです。したがって、プロジェクトAが.net 4.5の場合、プロジェクトBはC++を使用して作成することも、.net 4.6とすることもできません。繰り返しますが、これはおそらくあなたの状況にはありませんが、それは指摘する価値があります。 – AndyJ

+0

はい、あなたは正しいです、プロジェクト間の削減減結合について考えていませんでした。彼らはどちらも同じです:ネットバージョンは問題ではないので、私はそれを避けたいのですが、ポストビルドイベントを解決しなければならないと思います。 –

2

依存関係のプロパティを見て、あなたのexeファイルに "ローカルコピー"を設定すると、exeファイルがA.exeのbinフォルダにコピーされます。

編集: それはドイツ語版ですが、次のようになります。

Dependency Properies

+0

これは参照ではなく、プロジェクト間のソリューションの依存関係です。私が言うことは、ソリューションレベルの依存関係でそのプロパティを見つけることができないということです。 –

+0

は明確にするためのイメージを追加しました:) –

+0

Aha、私は依存関係をセットアップしていたプロジェクトの参照については考えていませんでした。ありがとう。 –

0

ポストビルドイベント(プロジェクトプロパティ - >ビルドイベント)を使用して、ビルドの最後にファイルをコピーすることができます。

関連する問題