使用MSBuild 4.0,从MSBuild任务中传递要在c#项目文件中展开的属性名,如何?
我为CI进程创建了MSBuild脚本,在此脚本中,我使用MSBuild任务编译解决方案:使用MSBuild 4.0,从MSBuild任务中传递要在c#项目文件中展开的属性名,如何?,c#,msbuild,C#,Msbuild,我为CI进程创建了MSBuild脚本,在此脚本中,我使用MSBuild任务编译解决方案: <PropertyGroup> <MyOutPath>Output</MyOutPath> </PropertyGroup> <MSBuild Projects="MySolution.sln" Targets="Clean;Rebuild" Properties="OutputPath=$(MyOutPath)\%24
<PropertyGroup>
<MyOutPath>Output</MyOutPath>
</PropertyGroup>
<MSBuild
Projects="MySolution.sln"
Targets="Clean;Rebuild"
Properties="OutputPath=$(MyOutPath)\%24(AssemblyName)">
</MSBuild>
输出
我希望c#项目文件使用如下输出路径
- 项目MyAssemblyName1的输出\MyAssemblyName1
- 项目MyAssemblyName2的输出\MyAssemblyName2
另外,我不想修改.csproj文件,因为我希望CI系统的影响最小。您可以使用将
.csproj
项目文件直接导入MSBuild脚本。这样,您可以直接引用AssemblyName
属性:
<Import Project="MyProject.csproj" />
<Message Text="The assembly name is $(AssemblyName)" />
好的,我有一个引用多个项目文件的解决方案,所有的项目文件都不是事先知道的。是否导入支持项?此外,我有一些解决方案不一定包含所有项目,因此我必须分析sln文件以获取要处理的正确项目文件。如果您使用的是MSBuild 4.0,则元素实际上支持通配符,因此,您可以说
来导入特定目录中的所有项目文件。仍然可以根据解决方案文件的内容排除一些项目。
<SetEnv Name="MSBuildEmitSolution" Value="1" />
<MSBuild Projects="MySolution.sln" Targets="Build" />
<Import Project="MySolution.sln.proj" />