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

时间:2016-02-25 02:26:33

标签: msbuild win-universal-app azure-devops azure-pipelines

背景:我们有一个包含多个项目的.NET解决方案,其中一些是针对.NET Framework编译的,一些是针对.NET Core(UWP)编译的。我们使用Visual Studio Team Services(Visual Studio Online)来持续构建我们的解决方案。

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

问题:每次添加,删除或重命名UWP项目时,我们都必须更新构建定义。我们想以某种方式自动选择UWP项目,理想情况下使用Visual Studio Build Step而不使用自定义脚本。有什么想法吗?

enter image description here

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

2 个答案:

答案 0 :(得分:2)

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

您可以尝试创建MSBuild project file并使用以下单独的参数添加项目:

<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文件。

答案 1 :(得分:0)

Msbuild步骤支持通配符,因此如果您的项目遵循此命名模式,则可以将其设置为构建int main(void){ HashMap::HashMap hm; hm.put("hello", MapElement("hello", "world")); hm.put("thats", MapElement("thats", "a test")); hm.put("hello", MapElement("hello", "test")); return 0; }