好吧,所以我有几十个解决方案都使用完全相同的命令行构建.
msbuild SolutionName.sln/p:property1 = value1; property2 = value2; etc etc等.
除了物业数量增长和增长.
有没有办法指定一个外部文件,我怎么没有最终得到10行msbuild命令?(想想财产100,财产101等).
我知道.wpp.target文件.但是,不得不将它们复制到每个项目文件夹中......这是我最后的选择.
不,我没有修改任何默认的MSBuild目标/文件.
小智 8
要回答原始问题,是的,您可以在外部文件中指定属性.它们被称为MSBuild响应文件.
msbuild somesolution.sln @PathToResponseFile.rsp
Run Code Online (Sandbox Code Playgroud)
在响应文件中,您可以放置属性,每行一个.
/verbosity:detailed
/target:build
/platform:AnyCPU
/configuration=Release
Run Code Online (Sandbox Code Playgroud)
一些更好理解的链接:http : //dailytechlearnings.wordpress.com/2011/08/24/msbuild-response-file/ http://msdn.microsoft.com/en-us/library/vstudio/ms404301.aspx
但是,使用msbuild文件构建解决方案和项目是一种更好的解决方案.您可以创建完全按照自己的意愿执行的全局目标.您可以创建自己的自定义清理和构建目标,然后构建/清理您的解决方案.
首先 - 我建议您使用msbuild脚本来构建解决方案,而不是使用命令行直接构建sln文件.例如使用这样的东西:
msbuild SolutionName.Build.proj
Run Code Online (Sandbox Code Playgroud)
在这个Solution1.Build.proj中你可以放任何简单的东西
<Project ToolsVersion="4.0" DefaultTargets="BuildMe" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="BuildMe">
<MSBuild Projects="SolutionName.sln" Properties="property1=value1;property2=value2;"/>
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
完成此步骤后,可以为构建过程增加灵活性,您可以开始利用MSProild任务的AdditionalProperties元数据.
然后,您可以使用<Import构造将共享属性列表存储在单独的文件和项元数据中,以传递属性值:
<Project ToolsVersion="4.0" DefaultTargets="BuildMe" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="MySharedProperies.props" />
<ItemGroup>
<ProjectToBuild Include="SolutionName.sln">
<AdditionalProperties>SomeProjectSpecificProperty</AdditionalProperties>
</ProjectToBuild>
</ItemGroup>
<Target Name="BuildMe">
<MSBuild Projects="@(ProjectToBuild)" Properties="@(MySharedProperies)"/>
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
您可以查看此帖子,了解有关属性和其他属性元数据或此原始MSDN参考的更多详细信息 (滚动到"属性元数据"部分)
如果你有任何问题,这是如何做到的基本想法 - 随意问.
| 归档时间: |
|
| 查看次数: |
6518 次 |
| 最近记录: |