调用MSBuild并向其传递要运行的单个任务
我们可以在调用MSBuild并向其传递要运行的单个任务,msbuild,csproj,Msbuild,Csproj,我们可以在csproj文件中定义一个目标,然后在从命令行调用msbuild时指定该目标。看起来是这样的: my.csproj CopyFiles目标要求msbuild运行Copy任务 如果我们不想编辑csproj文件怎么办。如何仅从命令行定义目标?或者,仅使用命令行,我们如何要求msbuild仅运行一个或两个任务 伪码 基于,这与您描述的不完全一样,即MSBuild不会从命令行输入中获取目标定义。它们必须在某个文件中定义 但是,您可以有一个脚本(甚至可能是.bat?),它可以执行以下操作: &l
csproj
文件中定义一个目标,然后在从命令行调用msbuild
时指定该目标。看起来是这样的:
my.csproj
CopyFiles
目标要求msbuild
运行Copy
任务
如果我们不想编辑csproj
文件怎么办。如何仅从命令行定义目标?或者,仅使用命令行,我们如何要求msbuild
仅运行一个或两个任务
伪码
基于,这与您描述的不完全一样,即MSBuild不会从命令行输入中获取目标定义。它们必须在某个文件中定义
但是,您可以有一个脚本(甚至可能是.bat?),它可以执行以下操作:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="foo.csproj" />
<Target Name="CopyFiles">
<Copy
SourceFiles="@(MySourceFiles)"
DestinationFolder="$(Destination)" />
</Target>
</Project>
/t:
开关可以指定多个目标。属性可以使用/p:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="foo.csproj" />
<Target Name="CopyFiles">
<Copy
SourceFiles="@(MySourceFiles)"
DestinationFolder="$(Destination)" />
</Target>
</Project>
msbuild my.csproj /t:"Copy SourceFiles=@(MySourceFiles) DestinationFolder=..."
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="foo.csproj" />
<Target Name="CopyFiles">
<Copy
SourceFiles="@(MySourceFiles)"
DestinationFolder="$(Destination)" />
</Target>
</Project>
msbuild temp.proj /t:CopyFiles /p:"Destination=c:\MyProject\Destination"