Msbuild 如何将不同的构建参数传递给一个解决方案的项目

Msbuild 如何将不同的构建参数传递给一个解决方案的项目,msbuild,win-universal-app,azure-devops,azure-pipelines,Msbuild,Win Universal App,Azure Devops,Azure Pipelines,背景:我们有一个单一的.NET解决方案,其中包含多个项目,其中一些项目是根据.NET框架编译的,另一些是根据.NET核心(UWP)编译的。我们使用VisualStudioTeamServices(当时是VisualStudioOnline)不断构建我们的解决方案 挑战:UWP项目需要不同的MSBuild参数和平台设置。我们根据下面的屏幕截图创建了一个构建定义:首先使用.NET参数构建解决方案。然后,对于每个UWP项目,我们都有一个MSBuild步骤 问题:每次添加、删除或重命名UWP项目时,我们

背景:我们有一个单一的.NET解决方案,其中包含多个项目,其中一些项目是根据.NET框架编译的,另一些是根据.NET核心(UWP)编译的。我们使用VisualStudioTeamServices(当时是VisualStudioOnline)不断构建我们的解决方案

挑战:UWP项目需要不同的MSBuild参数和平台设置。我们根据下面的屏幕截图创建了一个构建定义:首先使用.NET参数构建解决方案。然后,对于每个UWP项目,我们都有一个MSBuild步骤

问题:每次添加、删除或重命名UWP项目时,我们都必须更新生成定义。我们希望以某种方式自动选择UWP项目,理想情况下使用VisualStudio构建步骤,而无需定制脚本。有什么想法吗


工作备选方案:最初,我们将解决方案分为两个(每个平台一个解决方案),并针对每个解决方案运行两个不同的Visual Studio构建事件。但是,我们更喜欢在一个解决方案中工作。

没有自定义脚本,没有任何简单的方法可以实现这一点

您可以尝试创建一个项目,并使用以下单独参数在其中添加项目:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Build">
    <MSBuild Projects="Project1.csproj" Properties=Arguments1/>
    <MSBuild Projects="Project2.csproj" Properties=Arguments2/>
</Target>
</Project>


然后,您只需要在构建定义中构建项目文件。但是,这将要求您在添加/更改project时更新MSProject文件。

没有自定义脚本,没有任何简单的方法可以实现这一点

您可以尝试创建一个项目,并使用以下单独参数在其中添加项目:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Build">
    <MSBuild Projects="Project1.csproj" Properties=Arguments1/>
    <MSBuild Projects="Project2.csproj" Properties=Arguments2/>
</Target>
</Project>


然后,您只需要在构建定义中构建项目文件。但这将要求您在添加/更改项目时更新MSProject文件。

Msbuild步骤支持通配符,因此如果项目遵循此命名模式,则可以将其设置为build
***.uwp.csproj

Msbuild步骤支持通配符,因此,如果您的项目遵循此命名模式,您可以将其设置为build
***.uwp.csproj