2016-09-27 5 views
4

"私が期待していたフォルダ。サービスファブリックアプリケーションのルートディレクトリ

Directory.GetCurrentDirectory() 
"C:\\SfDevCluster\\Data\\_App\\_Node_0\\My.Application.Type_App2\\work" 

私の設定ファイルは、実行ファイルのすぐ隣にありますが、もちろん見つかりません。

今、私は解決策が何か不思議です。
私はコンソールアプリケーションを実行し続けたいので、「サービスファブリックをホスティングして、現在のディレクトリを変更する場合は...」回避策を実装したくありません。

推奨事項私の.exe.configファイルはどうですか?(もしあれば、どうやって見つけられますか?)

サービスファブリック設定で現在のディレクトリが「機能する」理由は何ですか?これは何らかのセキュリティ機構ですか?

+0

同じ問題にしてください。.. – user1496062

答えて

7

これは、私はちょうどそれが「アプリケーションを保つ」ために、「アプリケーションのデバッグモード」を設定するコードで

<EntryPoint> 
    <ExeHost> 
    <Program>configui.exe</Program> 
    <WorkingFolder>CodePackage</WorkingFolder> 
    </ExeHost> 
</EntryPoint> 
+2

"CodePackage"ではなく "CodeBase"ですが、どういうわけかプロジェクトアシスタントはこの情報を自分のサービス定義に追加しませんでした。 – lapsus

+0

私の場合、私はWeb以外のプロジェクトにWebをコピーしました。私はそれが働いていて比較をしているテンプレートから新しいサイトによってそれを見つけました。 – user1496062

0

ビルドアクションを「コンテンツ」として選択し、プロパティで「新しいものをコピー」を選択すると、出力フォルダにコピーされます。

+0

これは私の問題ではありません。設定ファイルは私が期待する場所です。私の "現在のディレクトリ"はそうではありません。 – lapsus

0

あなたは単純なリフレクションを実行し、実行中のアセンブリがあるフォルダを取得し、その場所でそのファイルを参照することができます。私は実行ファイルと同じフォルダに展開された必要な補助ファイルに対してこれをうまく実行しました。

string exePath = System.Reflection.Assembly.GetExecutingAssembly().Location; 
string filePath = Path.Combine(Path.GetDirectoryName(exePath), "myfilename.txt"); 
0

を指すようにマニフェストのサービスは、私がどこに私持っていた同様の問題を解決変わった方法ですファイルがローカルサービスファブリックの最終展開領域にコピーされませんでした。

これを入力するとプレビューの「更新アプリケーション」に設定されていました。しかし、そのモードは私のwwwrootフォルダをコピーしていないので、私のビューエンジン(このケースではNancy)は自分の意見を見つけられませんでした。

は右あなたのサービス・ファブリック・プロジェクト>プロパティ>アプリケーション>アプリケーションのデバッグモード]をクリックします> [ウェブサイトと景色を眺めながら、ここでのアプリケーション

関連する問題