考虑这两个MSBuild文件。首先build-script.xml
:
<?xml version="1.0" encoding="utf-8"?>
<!-- build-script.xml -->
<Project
ToolsVersion="4.0"
DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OutputName>OutputName</OutputName>
</PropertyGroup>
<Import Project="build-script-to-import.xml"/>
</Project>
然后build-script-to-import.xml
:
<?xml version="1.0" encoding="utf-8"?>
<!-- build-script-to-import.xml -->
<Project
ToolsVersion="4.0"
DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OutputPath>Path\$(OutputName)</OutputPath>
</PropertyGroup>
<Target Name="Build">
<Message Text="$(OutputPath)" />
</Target>
</Project>
这两个文件代表一个非常简化的 C# 项目文件 ( build-script.xml
),它引用了一个公共目标文件 ( build-script-to-import.xml
)。这意味着它不是更改build-script-to-import.xml
文件的选项。问题是OutputName
计算出来的,我需要在导入build-script-to-import.xml
文件之前将它设置为这个计算值。你知道我怎么能做到这一点吗?
注意 1:计算的值实际上是一个程序集版本,我可以使用GetAssemblyIdentity
MSBuild 任务从程序集文件中获取它。我看到的问题是在导入发生之前我可能不会调用目标。我想在MSBuild 任务OutputName
的帮助下设置属性的值。GetAssemblyIdentity
注意 2:构建将由 Visual Studio 触发,因此我可能不会使用批处理文件并将属性作为命令行参数发送到 MSBuild。