用 msbuild 开关覆盖 proj 属性
Overwrite proj property with msbuild switch
给定以下项目片段:
<Project DefaultTargets="artifacts" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<msbuild40>"msbuild.exe"</msbuild40>
</PropertyGroup>
<Target Name="compile">
<Exec Command="$(msbuild40) src\ClientFrameworkLoader.sln /t:Build /p:Configuration=Debug;platform=win32" />
<Exec Command="$(msbuild40) src\ClientFrameworkLoader.sln /t:Build /p:Configuration=Release;platform=win32" />
</Target>
</Project>
我认为我可以使用以下命令覆盖 msbuild40
属性 是否正确?
MSBuild.exe snippet.proj /p:msbuild40="C:\Program Files (x86)\MSBuild.0\bin\MSBuild.exe"
我手头没有 Windows 机器,否则我就试试这个。
是的,您可以像那样覆盖 属性。但是,您需要在调用的命令两边加上引号,因为它包含空格。 msbuild 中的转义引号是 $quot;
另外一个更 msbuild 的方法是不要重复你自己并将你想要构建的两个配置放在一个 ItemGroup 中并循环它。应用这些修改得到:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="artifacts" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<msbuild40>"msbuild.exe"</msbuild40>
</PropertyGroup>
<ItemGroup>
<Configurations Include="Debug;Release"/>
</ItemGroup>
<Target Name="compile">
<Exec Command=""$(msbuild40)" src\ClientFrameworkLoader.sln /t:Build /p:Configuration=%(Configurations.Identity);platform=win32" />
</Target>
</Project>
也就是说,在 windows 机器上进行测试可能是明智的,然后再将其发送到野外:P
给定以下项目片段:
<Project DefaultTargets="artifacts" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<msbuild40>"msbuild.exe"</msbuild40>
</PropertyGroup>
<Target Name="compile">
<Exec Command="$(msbuild40) src\ClientFrameworkLoader.sln /t:Build /p:Configuration=Debug;platform=win32" />
<Exec Command="$(msbuild40) src\ClientFrameworkLoader.sln /t:Build /p:Configuration=Release;platform=win32" />
</Target>
</Project>
我认为我可以使用以下命令覆盖 msbuild40
属性 是否正确?
MSBuild.exe snippet.proj /p:msbuild40="C:\Program Files (x86)\MSBuild.0\bin\MSBuild.exe"
我手头没有 Windows 机器,否则我就试试这个。
是的,您可以像那样覆盖 属性。但是,您需要在调用的命令两边加上引号,因为它包含空格。 msbuild 中的转义引号是 $quot;
另外一个更 msbuild 的方法是不要重复你自己并将你想要构建的两个配置放在一个 ItemGroup 中并循环它。应用这些修改得到:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="artifacts" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<msbuild40>"msbuild.exe"</msbuild40>
</PropertyGroup>
<ItemGroup>
<Configurations Include="Debug;Release"/>
</ItemGroup>
<Target Name="compile">
<Exec Command=""$(msbuild40)" src\ClientFrameworkLoader.sln /t:Build /p:Configuration=%(Configurations.Identity);platform=win32" />
</Target>
</Project>
也就是说,在 windows 机器上进行测试可能是明智的,然后再将其发送到野外:P