3

ファイルから相対パスを書き込もうとしていますが、取得できる相対パスは実行中のアプリファイルからのみです。

これは、NCrunchが別のディレクトリからテストを実行するために問題を引き起こしているため、コードファイルに関連するファイルが見つからないため、すべてのテストに失敗します。

このプロジェクトに取り組んでいる人が何人かいるため、絶対パスが機能しないため、これが相対パスであることが重要です。

コードが書かれている.csファイルを基準にしたパスを作成する方法はありますか?

今まで使ってきました

 private static readonly string MyDocumentsRoot =      Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
        public static readonly string ApplicationRoot = MyDocumentsRoot + @"\Visual Studio 2012\Projects\";

しかし、実際にはもう少し相対的である必要があります

4

5 に答える 5

3

このソリューションは、NCRUNCH のドキュメントに詳しく記載されています。

暗黙的なファイル依存関係

遅かれ早かれ、他のソリューションは失敗します。(同様の解決策を提供するMSTestでも同様の問題がありました)。

于 2012-10-29T14:53:49.520 に答える
1

GetExecutingAssemblyこのコードで試すことができます-メソッドに基づいています

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

または

  string path  = System.Reflection.Assembly.GetAssembly(YourClass).Location;
于 2012-10-29T14:34:16.943 に答える
0

これを使用str=Directory.getdirectoryすると、アプリのパス(リリースまたはデバッグ(アプリが配置されている場所)までのフォルダー)を取得し、文字列に保存できます(メソッドは文字列を返します)。その後、次のstr.replace(str1,str2)メソッドを使用できます。文字列内はエスケープ文字str1であるためです。エスケープ文字についてサポートが必要な場合は、お知らせstr2ください。サポートさせていただきます。\\\\

于 2012-10-29T14:34:34.620 に答える
0

ドキュメントには、パスがプロジェクトファイルに関連していることが示されています。

たとえば、次のファイルを指定して含めることができます。

SpecialConfiguration\ImportantConfigFile.config
..\CustomBuild\**.*
..\..\TestResources\Spreadsheets\*.xls

これには、個々のファイル(ImportantConfigFile.config)、ディレクトリの内容全体、..\CustomBuildそのすべてのサブディレクトリ、およびディレクトリ内のすべての.xlsファイルが含まれます..\..\TestResources\Spreadsheets

すべてのファイルパスは、ディスク上のプロジェクトファイルのパスを基準にして指定する必要があります。NCrunchがワークスペースを構築すると、すべての依存ファイルが自動的に配置され、元の場所と同じ相対パスでワークスペースに存在します。

于 2012-10-29T14:34:45.190 に答える
0

私は通常、実行可能ファイルが存在する場所に古いスタイルの ini ファイルを配置します。ここでは、アプリケーションが必要とするファイルとフォルダーの絶対パスを保存します。これにより、開発環境とは異なる運用環境 (顧客サイト) でこれらのパスを構成することもできます。NCrunch がアセンブリを実行するフォルダにこの ini ファイルのコピーを置いておくだけで、問題は解決します。

私のiniファイルの実装は、実行可能ファイルが存在するフォルダーからルートフォルダーに向かって、iniファイルが見つかるまで、すべてのフォルダーを検索します。これにより、共通の ini ファイルを使用してさまざまな実行可能ファイルを作成できます。たとえば、ini ファイルをbin両方のフォルダに配置するDebugと、 とReleaseバージョンは自動的に同じ ini ファイルにアクセスします。

于 2012-10-29T14:54:42.153 に答える