3
MSBuildとインラインタスクを使用してバッチスクリプトとC#コードを結合しようとしています。コマンドライン引数を渡す唯一の方法のように見えます(/property
コマンドラインmsbuildのスイッチ)、インラインタスクから何か外部のものにアクセスする唯一の方法は、プロパティを使用することです。MSBuildのプロパティから取得したパラメータ値を割り当てます。
MSBuildのプロパティとパラメータをインラインタスクでアクセス可能にする方法を教えてください。ここで
は、サンプルスクリプトです(.bat
として、または
.cmd
でなければなりませんが、保存されます):
/property:H=Hello
として
<!-- :
@echo off
echo -^- FROM BATCH
for /r "%SystemRoot%\Microsoft.NET\Framework\" %%# in ("*msbuild.exe") do set "msb=%%#"
if not defined msb (
echo no .net framework installed
exit /b 10
)
rem :::::::::: calling msbuid :::::::::
call %msb% /nologo /noconsolelogger "%~dpsfnx0" /property:"H=From C#"
rem ::::::::::::::::::::::::::::::::::::
exit /b %errorlevel%
-->
<Project ToolsVersion="$(MSBuildToolsVersion)" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="_">
<_/>
</Target>
<UsingTask
TaskName="_"
TaskFactory="CodeTaskFactory"
AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v$(MSBuildToolsVersion).dll" >
<ParameterGroup >
<Z ParameterType="System.String">$(H)</Z>
</ParameterGroup>
<Task>
<Code Type="Fragment" Language="cs">
<![CDATA[
System.Console.WriteLine("-- "+"$(H)");
]]>
</Code>
</Task>
</UsingTask>
</Project>
が渡され、その意図は --Hello--
を印刷するには、このスクリプトですが、それだけで