スタックオーバーフローには関連する質問がいくつかありますが、私の状況が異なるか、状況に関連付けるにはあまりにも愚かです。誰かがこれで私を助けてくれることを願っています。さらに、私は .NET 開発者でさえないので、間違った用語の使用について事前にお詫び申し上げます。
私のシナリオは次のとおりです。.net アプリケーションを展開するために使用されるツール (ワンクリック?) は、フルネームが 300 文字を超えるディレクトリに配置します。アプリケーションは、サード パーティのコンポーネント (dbstore と呼びましょう) を使用して、アプリケーションの展開ディレクトリにある指定されたファイルを処理します。
これまではAssembly.GetExecutingAssembly().GetName().CodeBase
、dbstore に渡すファイルの完全修飾名を作成するために を使用していました。しかし、dbstore は古いスタイルの API を使用しているため、ファイルを開こうとすると失敗します。
dbstore はすぐには変更されないことが予想されるため、アプリケーションの chdir をデプロイメント ディレクトリに移動し、現在のディレクトリ内の相対パス名をそれに渡すことをお勧めします。これは、C# コードで受け入れられた応答PathTooLongException で説明されているアプローチでもあります。
Directory.SetCurrentDirectory
ただし、それもスローすることがわかりましたPathTooLongException
。これは、UNC パス名を使用している場合でも発生します (例: で始まる名前)。\\?\0000000000000\...
私は根本的に間違ったことをしていますか?使用する別の機能はありますか?
編集:私が探しているものを達成する方法はないようです。私が知る限り、現在のディレクトリを長いパスに設定する方法はありません。