【问题标题】:How can I hide the command I'm using in an MSBuild Exec task from console output?如何从控制台输出隐藏我在 MSBuild Exec 任务中使用的命令?
【发布时间】:2014-08-07 18:41:34
【问题描述】:

我的 MSBuild 文件中有一个任务,如下所示:

<Exec command="net use $(DeploymentServerName) /user:username passwd" ContinueOnError="false" />

但在控制台输出中它会转储命令:

...
net use $(DeploymentServerName) /user:username passwd
...

但如果可能的话,我想隐藏凭据。我不关心命令的输出去哪里,我只关心命令本身没有回显到控制台。有什么想法吗?

【问题讨论】:

    标签: msbuild msbuild-task


    【解决方案1】:

    从 .NET 4.0 Exec MSBuild 任务开始,获得了属性 EchoOFF,它允许实现这一点 - 抑制命令本身的回显(而不是命令输出)。完整文档是here。只需将 EchoOff="true" 添加到 Exec 属性列表即可。

    【讨论】:

    • 这应该是答案
    • 哇,我已经有一段时间没有访问这个问题了,我会仔细检查一下,看看它是否适合我,然后切换答案,因为它看起来更简单......跨度>
    【解决方案2】:

    有几种可能的方法,这里是一个

    <Target Name="DoHideCommand">
      <Exec Command="MSBuild $(MsBuildThisFile) /t:SpecialCommand /nologo /noconsolelogger"/>
    </Target>
    
    <PropertyGroup>
      <MyCommand>dir c:</MyCommand>
    </PropertyGroup>  
    
    <Target Name="SpecialCommand">
      <Exec Command="dir"/>
    </Target>
    

    这会调用一个单独的 msbuild 进程来调用实际的目标,并隐藏所有输出结果

    ...
    DoHideCommand:
      MSBuild test.targets /t:SpecialCommand /nologo /noconsolelogger
    ...
    

    还有一个

    <Target Name="SpecialCommandViaFile">
      <PropertyGroup>
        <TmpFile>tmp.bat</TmpFile>
      </PropertyGroup>
      <WriteLinesToFile File="$(TmpFile)" Lines="$(MyCommand)"/>
      <Exec Command="$(TmpFile) > NUL 2>&amp;1" WorkingDirectory="$(MsBuildThisFileDirectory)"/>
      <Delete Files="$(TmpFile)"/>
    </Target> 
    

    这会创建一个批处理文件来运行实际命令,然后将所有输出重定向到 NUL,因此仅显示以下内容:

    ...
    SpecialCommandViaFile:
    tmp.bat > NUL 2>&1
    Deleting file "tmp.bat".
    ...
    

    请注意,执行您的 msbuild 文件的人始终可以简单地打开您的文件以查看凭据,即使它们在运行时隐藏在输出中。

    【讨论】:

    • @IlyaKozhevnikov 没有蝙蝠,它只会抑制命令输出,而不是命令本身。 &amp;gt; 等是可选的,&gt; 也可以正常工作。
    • 我使用了上面的想法,通过执行另一个目标。我让目标名称提供了一些信息,所以我仍然会在输出中知道正在发生什么步骤,但不是实际的细节。谢谢!
    猜你喜欢
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多