0

Visual Studio (2012 Express for Desktop) に 2 つの C# プロジェクトがあります。1 つはコンソール アプリケーションで、もう 1 つは Nunit テストのライブラリです。テスト ライブラリが Process を使用してコンソール アプリケーションを呼び出せるようにしたいと考えています。

実行可能ファイルへのパスをハードコードすることはできますが、これはやりたくありません。Visual Studio でパス文字列をテスト ライブラリに埋め込む方法はありますか?

4

3 に答える 3

0

このスニペットを使用して見つけてみてくださいAssembly CodeBase(Location多くのテスト ランナーによって一時フォルダーが作成されるため、テストの実行時に間違っている可能性があります)。

var codeBase = typeof(AnyTypeFromAnotherAssembly).Assembly.CodeBase;
var uri = new UriBuilder(codeBase);
var path = Uri.UnescapeDataString(uri.Path);

別の方法は名前で検索することですが、名前を安全に変更したいので、名前をハードコードすることはお勧めしません。

var codeBase= AppDomain.CurrentDomain
                    .GetAssemblies()
                    .First(assembly => assembly.ManifestModule.Name == "MyAssembly.dll")
                    .CodeBase

環境によって異なるため、絶対パスをどこにもハードコーディングしないでください。

于 2013-01-10T14:06:24.677 に答える
0

私が考えることができるいくつかのオプションがあります:

1) リソース ファイル ( .resx) を追加し、リソース キー (厳密に型指定されたもの) を参照します。

2) 構成ファイルにパスを追加します。 AppSettings動作する可能性があります。

于 2013-01-10T14:06:36.267 に答える
0

使用できます

string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

現在実行中のアセンブリのパスを検索します。

于 2013-01-10T14:21:52.183 に答える