1

問題:

コードからFxCopCmd.exe(FxCop 10.0)を使用する必要があります。問題は、FxCopCmdが引数(以下のp.StartInfo.Argumentsを参照)をエンコードの問題で取得することです。(私はエンコーディングやローカリゼーションの経験がありません。)

例:

私が構築する引数:

/ o: "C:\Users\Ákos\Documents\Tanulás\diplomamunka\softwareprojectqualityanalyser\implementáció\Analizer\ Analizer \ bin \ Debug \ temp \ probaAnalisisReport.xml" / fo / f: "C:\Users\Ákos\Documents\ Visual Studio 2010 \ Projects \ TeaBoiler \ TeaBoiler \ bin \ Release \ TeaBoiler.exe "

FxCopCmdエラーメッセージ:

出力ファイルを開けませんでした:パス'C:\ Users \ µkos \ Documents \ Tanul s \ diplomamunka \softwareprojectqualityanalyser\implementci˘\Analizer\ Analizer \ bin \ Debug \ temp\probaAnalisisReport.xml'の一部が見つかりませんでした。 。

ノート:

編集/貼り付けを使用して作成した引数を使用してcmd.exeからFxCopCmd.exeを使用すると、正常に機能します。

開発環境:

Windows 7 Prof EN、デフォルトの入力言語:ハンガリー語、.NET 4.0、C#4.0、VS2010 Ultimate

コード:

using (Process p = new Process())
        {
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError = true;
            p.StartInfo.CreateNoWindow = true;
            p.StartInfo.FileName = this.FxCop10Path.LocalPath;

            string fullpath = Assembly.GetExecutingAssembly().Location;
            string dir = Path.GetDirectoryName(fullpath);

            p.StartInfo.Arguments = "/o:\"" + dir + "\\temp\\" +
                (this.ProjectName.Equals("") == true || this.ProjectName == null
                ? "noNameProjectAnalysisReport.xml" : this.ProjectName + "AnalisisReport.xml\"")
                + " /fo";
            foreach (var item in this.Files)
            {
                p.StartInfo.Arguments += " /f:\"" + item.FilePath + "\"";
            }
            try
            {
                p.Start();
            }
            catch (Win32Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

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

4

1 に答える 1

1

引数を設定した直後にブレークしてみてください。生成されているものを見てから、コピーして cmd ウィンドウに貼り付け、何が起こっているかを確認してください。また、「temp」フォルダは存在しますか? そうでない場合、FxCop によってフォルダーが作成されますか?

于 2011-02-22T20:58:24.410 に答える