2017-10-19 25 views
0

私はConfuserEx CLIツールに問題があります。ConfuserEx CLI指定された出力ディレクトリがありません

System.Diagnostics.Process p = new System.Diagnostics.Process(); 

//p.StartInfo.RedirectStandardOutput = true; 
//p.StartInfo.UseShellExecute = false; 
//p.StartInfo.CreateNoWindow = true; 

p.StartInfo.FileName = strConfuserExFilePath; 
p.StartInfo.Arguments = strConfuserExProjectFilePath; 

p.Start(); 

strConfuserExFilePath = D:\例の.Net \ Diagramm \ TEST \ハウプト-PROJEKT \パッケージ\ ConfuserEx.Final.1.0.0 \ツール私はそのようなC#のprogrammからCLIを起動したいです\ Confuser.CLI.exe

strConfuserExProjectFilePath = D:\例の.Net \ Diagramm \ TEST \ハウプト-PROJEKT \ TESTの\ビン\ X86 \デバッグ\ ConfuserEx.crprojが

マイ.crprojファイルがどのように見えますこれは:

<project outputDir="D:\Examples .Net\Diagramm\TEST\Haupt-Projekt\TEST\bin\x86\Debug\Confused" baseDir="D:\Examples .Net\Diagramm\TEST\Haupt-Projekt\TEST\bin\x86\Debug" debug="false" xmlns="http://confuser.codeplex.com"> 
    <rule pattern="true" preset="normal" inherit="false"> 
    <protection id="anti ildasm" action="add" /> 
    <protection id="anti tamper" action="add" /> 
    <protection id="constants" action="add" /> 
    <protection id="ctrl flow" action="add" /> 
    <protection id="anti dump" action="add" /> 
    <protection id="anti debug" action="add" /> 
    <protection id="invalid metadata" action="remove" /> 
    <protection id="ref proxy" action="remove" /> 
    <protection id="resources" action="remove" /> 
    <protection id="rename" /> 
    </rule> 
    <module path="h01_SonstVerwaltung.dll" /> 
</project> 

私がこのコードを実行したとき、CommandBoxは非常に迅速に消えて、私はエラーを読むことができませんでした。ですから、CommandLineでCLIを起動して何が起きるかを知ることが大切です。私は次の操作を実行した場合:

D:\Examples .Net\Diagramm\TEST\Haupt.Projekt\packages\ConfuserEx.Final.1.0.0\tools>Confuser.CLI.exe D:\Examples .Net\Diagramm\TEST\Haupt-Projekt\TEST\bin\x86\Debug\ConfuserEx.crproj 

を私はエラー

Confuser.Ex.CLIを取得:なし出力ディレクトリが

を指定していない、私は同じコードを実行すると奇妙なことがあるが、 PowerShellで動作します:

function ObfuscateProjectAssembly 
{ 
    [CmdletBinding()] 
    param()  

    Utility_AssertValid_FilePath $ConfuserExFilePath 
    Utility_AssertValid_FilePath $ConfuserExProjectFilePath 

    if(Test-Path -Path $ObfuscatedAssemblyFilePath) { 
     Remove-Item -Path $ObfuscatedAssemblyFilePath 
    } 


    & $ConfuserExFilePath -nopause $ConfuserExProjectFilePath 

    Utility_AssertValid_FilePath $ObfuscatedAssemblyFilePath  
} 

なぜPowerShellでは動作しますが、Cでは動作しません#。そして私はすでに、C#コードに-n | -noPauseパラメータを追加しようとしました。

EDIT 私はC#コードからPowerShellを実行しようとしましたが、同じエラーメッセージが表示されます。

using (PowerShell PowerShellInstance = PowerShell.Create()) 
{ 
    PowerShellInstance.AddScript("& (\"" + strConfuserExFilePath + "\") -nopause " + strConfuserExFilePath); 
    Collection<PSObject> PSOutput = PowerShellInstance.Invoke(); 

    if (PowerShellInstance.Streams.Error.Count > 0) 
    { 
     foreach(ErrorRecord er in PowerShellInstance.Streams.Error) 
     { 

     } 
    } 

    foreach (PSObject outputItem in PSOutput) 
    { 
     if (outputItem != null) 
     { 
      //System.Diagnostics.Debug.WriteLine(outputItem.BaseObject.GetType().FullName); 
      System.Diagnostics.Debug.Write(outputItem.BaseObject.ToString() + "\n"); 
     } 
    } 
} 

答えて

0

私は自分の問題を発見した、それは非常に簡単だった。私は ".crprojファイルの周り

をここで正しい方法:プロセスへ経由 ナンバー1:

p.StartInfo.Arguments = "忘れてしまった-nopause \"" + strConfuserExProjectFilePath + "\" を」 ; PowerShellを介し

番号2:

PowerShellInstance.AddScript(」& \ "" + strConfuserExFilePath + "\" -nopause \ "" +にstrconf userExProjectFilePath + "\" ");

関連する問題