3

ソリューションからファイルを読み込もうとしています。相対パスを使用してファイルを見つける方法を知りたいです。私のソリューションには3 つのプロジェクトが含まれています。読み取りたいファイルはproject Aにありますが、それを読み取っているコードはproject Bにあります。それを使用..\file.txtすると、 Project AではなくProject Bに移動します。使えば 手に入るApplication.StartPath

C:\\Users\\Linda\\AppData\\Local\\Microsoft\\VisualStudio\\10.0\\Extensions\\tangible\\t4 editor\\2.1.1

一方、コードを開発したディレクトリを見つける必要がありますC:\Sp_CodeGenerator\...

私も使ってみました

Environment.GetFolderPath

Directory.GetCurrentDirectory();
System.IO.Path.GetDirectoryName(System.IO.Path.GetDirectoryName(Application.ExecutablePath))'`
System.AppDomain.CurrentDomain.BaseDirectory.ToString();

しかし、これらはすべて同じ結果を生成し、ハード ディスク上でソリューションが作成された場所ではなく、Visual Studio プログラム ファイルに移動します。

他に試してみるべきことはありますか?

4

1 に答える 1

4

t4 テンプレート内からパス関連のコードを実行しているように思えますか? パスを処理するすべての通常の手段は、使用しているビジュアルスタジオと t4 エディタープラグインのコンテキストにあるため、これは実際に答えに影響します。

パスを適切に解決するには、ITextTemplatingEngineHost にアクセスする必要があります。

テンプレートにホスト固有のディレクターを追加する

<#@template language="c#" hostspecific="true" #>

その後、次の方法でアクセスできます

this.Host.ResolvePath(path);

//also available (Gets the path and file name of the text template that is being processed.)
//this.Host.TemplateFile

http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.texttemplating.itexttemplatingenginehost(v=vs.110).aspxを参照してください。

于 2013-01-10T03:08:26.300 に答える