12

私が使用するアプリは .NET.configファイルを解釈します。必要な証明書へのパスを指定する行を追加しました

<add key="Certificate" value="..\certificate.abc"/>

ただし、アプリが存在する正確なフォルダーから実行した場合にのみ機能することがわかりまし.exe.config別のフォルダーから実行すると、作業ディレクトリに対して../展開された場所で証明書が検索されるため、失敗します。

パスが作業ディレクトリではなく構成ファイルに対して..\certificate.abc展開されるようにするには、構成ファイルに何を書く必要がありますか?

アプリを変更できません (私のものではありません)。変更できるのは構成ファイルのみです。

4

7 に答える 7

1

これは、構成ファイルを変更するだけでは変更できません。絶対パスを使用しない限り。

アプリケーションを変更できる場合...

これがasp.netアプリケーションの場合は、Server.MapPath. Windows アプリの場合は、実行中のアプリケーションのディレクトリを取得し、それを構成ファイルの相対パスと組み合わせる必要があります。

System.Reflection.Assembly.GetExecutingAssembly().Location.EXE ファイルへのパスが表示されます。その後、 Path.Combineを呼び出して、相対パスとアプリケーションのパスを組み合わせることができます。

于 2013-04-23T13:20:53.420 に答える
0
ログを配置するファイルパスの前に「../」を使用します

以下のコードを使用している場合、ErrorLog フォルダーは bin\Debug\net5.0 に作成されます。

于 2021-07-19T09:47:23.153 に答える
0

構成ファイルは、実行中のファイル以外の場所にある可能性があります。実行パスについて言及しているように、これはデスクトップベースのアプリケーションであることを理解しているので、このようにできることを次に示します。

設定で。

 <setting name="FilePath" serializeAs="String">
        <value>AppPath\MyFile.abc</value>
    </setting>

これを取得します。

   var path = System.Configuration.ConfigurationManager.AppSettings["FilePath"];

            if  (path !=null && path.Contains("AppPath"))
            {

                var filepath = System.IO.Path.Combine(
                    System.Reflection.Assembly.GetExecutingAssembly().Location,
                    path.Replace("AppPath", string.Empty).ToString());

                Console.WriteLine(filepath);
            }
于 2013-04-23T14:35:36.253 に答える