2

コンパイル時にプロジェクトパスを見つける方法はありますか?コンパイル時のプロジェクト(bin)フォルダパス?

私は、デフォルトのweb.config(プロジェクトフォルダ内のconfigurartion)の設定をテストする単体テストを作成したいと思います。主にヒューマンエラーを減らすため。

実行時に(テスト用に)アセンブリの場所に依存することはできませんので、プロジェクトフォルダがどこにあるweb.configにアクセスするのかを知る必要があります。

複数のプロジェクトに同じ(基本)テストコードを使用したいと思うので、私は「汎用」ソリューションが必要です。ほとんどの開発マシンでは物理的な場所が異なります。

ありがとうございました。

答えて

2

コンパイル時にVisual Studioプロジェクトパスが必要な場合は、プロジェクトで使用されているソースファイルを作成するコマンドラインを実行するために、ビルド前イベント(プロジェクトプロパティダイアログを参照)を使用できます。

ソースファイルには、変数定義などのコードが含まれています。テストコードはこの変数を使用します。変数の値はVSから来ます。 Pre-Build Eventコマンドを実行すると、特定のマクロのプロジェクトプロパティを置き換えます。必要なマクロはおそらくProjectDirです。

だから最後に、あなたはあなたのビルド前のイベントのコマンドのためにこのようなものがあります:あなたが使用しているどのような言語

echo 'const char * PROJECT_PATH = "$(ProjectDir)";' > source.cpp 

わからないが、それに応じ調整します。あなたがC#プロジェクトを持っているように聞こえるとRKBの答え、

に基づいて

+0

良い計画ですが、私がテストしたいウェブ設定が別のプロジェクトにあるので、私が必要とするものを完全には行いません。それでも、私はここから作業することができます。 – Inferis

7

、このポストビルドステップを使用します。

echo namespace ProjectPath { static public class ProjectPath { public static readonly string Path = @"$(ProjectDir)";} } > $(ProjectDir)path.cs 

次に、テストプロジェクトに既存の項目としてpath.csを含めます。代わりに、イベントコマンドラインを構築するポストを使用しての、プロジェクトのBeforeBuildターゲットにMSBuildのExecのタスクとしてコマンドを実行することができ、わずかソリューションを向上させるために

string path = ProjectPath.ProjectPath.Path; 
+0

私のニーズにもっと完全な答えがありましたが、rkbが最初でしたので、私は彼に信用を与えます。 – Inferis

+1

これは単体テストプロジェクトにとって素晴らしいものです。よくやった。 –

0

:次に、あなたが経由でアクセスすることができます。

関連する問題