pet*_*erw 5 msbuild msbuild-task
我在我的MSBuild文件中有一个任务,如下所示:
<Exec command="net use $(DeploymentServerName) /user:username passwd" ContinueOnError="false" />
Run Code Online (Sandbox Code Playgroud)
但在控制台输出中它将转储命令:
...
net use $(DeploymentServerName) /user:username passwd
...
Run Code Online (Sandbox Code Playgroud)
但是如果可能的话,我想隐藏凭据.我不关心命令输出的位置,我只关心命令本身没有回显到控制台.有任何想法吗?
有几种可能的方法,这是一种
<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>
Run Code Online (Sandbox Code Playgroud)
这会调用一个单独的 msbuild 进程来调用实际目标,并隐藏所有输出,从而导致
...
DoHideCommand:
MSBuild test.targets /t:SpecialCommand /nologo /noconsolelogger
...
Run Code Online (Sandbox Code Playgroud)
这是另一张
<Target Name="SpecialCommandViaFile">
<PropertyGroup>
<TmpFile>tmp.bat</TmpFile>
</PropertyGroup>
<WriteLinesToFile File="$(TmpFile)" Lines="$(MyCommand)"/>
<Exec Command="$(TmpFile) > NUL 2>&1" WorkingDirectory="$(MsBuildThisFileDirectory)"/>
<Delete Files="$(TmpFile)"/>
</Target>
Run Code Online (Sandbox Code Playgroud)
这将创建一个批处理文件来运行实际命令,然后将所有输出重定向到 NUL,因此仅显示以下内容:
...
SpecialCommandViaFile:
tmp.bat > NUL 2>&1
Deleting file "tmp.bat".
...
Run Code Online (Sandbox Code Playgroud)
请注意,执行 msbuild 文件的人始终可以简单地打开文件来查看凭据,即使它们在运行时隐藏在输出中。
归档时间: |
|
查看次数: |
1665 次 |
最近记录: |