TL; DRデバッグモードを実行しているときにアプリケーションが動作しますが、リリースでは動作しません。リリースされたバージョンでは無効な文字ですが、デバッグモードでは無効です
MVVMを使用してファイルパスを読み込んで、一部のデータを処理しています。デバッガのバージョンを使用しているときに、読み込み、検証、変換が正常に行われますが、公開/リリースされたバージョンを使用しているときにエラーが発生するため、どこで発生するのかを追跡できません。ひとつは、長いファイルパスに付随して@ "\\?\"を含めることだったということです。 添付ファイルは私たちのコンバータです。
public static string CheckFilePath(string filePath)
{
//Network Location
if (filePath.StartsWith(@"\\"))
{
filePath = filePath.TrimStart(@"\\".ToCharArray());
return @"\\?\unc\" + filePath;
}
//Local location
if (!filePath.StartsWith(@"\\?\") && (!filePath.StartsWith(@"\\") || !filePath.StartsWith(@"\\?\UNC\")))
{
return @"\\?\" + filePath;
}
return filePath;
}
また、4.6.2を使用しており、これを使用して長いファイルパスを試してみてください。これは、@ "\\?\"または@ "\\"があるかどうかを確認するためのコンバーターであり、長いパスには以下のものが必要です。このコンバータは問題ではないかもしれません...どんな助けも素晴らしいでしょう!
コードにトレースを追加して、リリースモードで何が起こっているのかを確認することをお勧めします。 –
ありがとう、私はそれを試してみましょう。 – bird
すべてのものを強制的に再構築するbinフォルダを削除します。デバッグとリリースの両方で同じソースファイルを使用していないようです。 – jdweng