8

再現は簡単ですが、私には本当に奇妙です:

次の 'args' と 3 つの文字列を VisualStudio のコマンド ライン引数テキスト ボックスに追加します ([プロジェクト プロパティ] -> [デバッグ] -> [開始オプション] の下)。

-SourceFile:"c:\temp\file.txt" -DestinationFolder:"c:\temp\" -ArchiveFolder:"C:\temp\"

次の単純なコンソール アプリケーションでテストします。

class Program
{
    static void Main(string[] args)
    {
        foreach (string t in args)
        {
            Console.WriteLine(t);
        }
        Console.ReadKey();
    }
}

結果: 配列 (args[]) には 3 つの文字列ではなく 2 つの文字列がありますか?

[0] SourceFile:c:\temp\file.txt
[1] DestinationFolder:c:\temp" -ArchiveFolder:C:\temp"

なぜこれが起こるのか誰かが私に説明できますか?引用符には通常の原因で何か奇妙なことがあります。引用符は.netによって削除されますが、ここにはまだいくつかの引用符があります...しかし、問題はわかりません...

助けてくれてありがとう!

4

1 に答える 1

13

値にa\"がありDestinationFolderます。これは、引用符を「エスケープ」し、開始引用符と組み合わせて文字列を閉じるのではなく、値のテキストに含めます。リテラルが必要な\ので、次を使用します\\

-SourceFile:"c:\temp\file.txt" -DestinationFolder:"c:\temp\\" -ArchiveFolder:"C:\temp\\"

(SO の強調表示エンジンでのエスケープの動作も確認できます)

于 2013-01-22T17:44:25.640 に答える