2009-04-22 16 views
22

私はこれまで見てきましたが、この問題の解決策を見つけられませんでした。設定と呼ばれるサブディレクトリの下に構成ファイルを持つクラスライブラリを作成したいと考えています。私はそのクラスライブラリをどこにでも配備したいと思っています。私は自分の場所を知ってその設定ファイルを見つけたいと思っています。クラスライブラリのカレントディレクトリを取得するには?

Assembly.GetExecutingAssembly().Locationの以前の試みは機能しませんでした。
それは、代わりに、所望の

bin/Configurationパスの

C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\7c00e0a3\38789d63\assembly\dl3\9c0a23ff\18fb5feb_6ac3c901

として一時場所を返します。

ので:

  1. クラスライブラリは、ディスク上の自身の位置を認識することができますか?ディレクトリの変更は、あなたがこれは動作するはず
+0

なぜアプリケーションのapp.configファイルに設定を含めず、クラスライブラリでConfigurationManagerを使用しますか? –

+0

これはASP.NETであることを確認するために質問を明確にすることができます(後で検索可能性を高めるため)。デスクトップアプリケーションの場合、GetExecutingAssembly()はうまく動作します。 – Stu

+1

@Justin:クラスライブラリを呼び出し元アプリケーションから独立させたい。 @Stu:両方。コンソールアプリケーションとWebアプリケーションの両方に使用できるクラスライブラリを作成したいと思います。クラスライブラリは、誰がそれを呼んでいるか気にしてはいけません。 – nandos

答えて

33

(など、IISにデプロイする、VS内部デバッグ)アプリケーションを実行する方法に基づいているようですので、

  • は、どのように私は、この機能のためのwittingテスト・スクリプトに行くか -

    string assemblyFile = (
        new System.Uri(Assembly.GetExecutingAssembly().CodeBase) 
    ).AbsolutePath; 
    
  • +0

    は:System.Reflection.Assembly.GetExecutingAssembly().Locationは同じ情報を与えません...? – dba

    +1

    @dbaシャドーコピーがあるときはありません。例えば、単体テストで試してみてください。それは間違っています –

    関連する問題