未提供指定配置时使用MSBUILD

时间:2011-11-30 13:12:16

标签: visual-studio-2010 msbuild

我有一个包含多个项目的解决方案。我正在尝试使用MSBUILD来自动部署。我有以下配置值用于构建 1.调试 2.发布 3.开发 对于某些项目,我使用发布模式进行DEV配置。但是在MSBUILD命令中使用DEV作为配置时,它会抛出异常,说未找到DEV配置。

当DEV在MSBUILD中用作配置时,如果DEV不可用于项目,我们有什么办法可以告诉MSBUILD使用Release模式吗?

由于 Ashwani

2 个答案:

答案 0 :(得分:2)

在您的(可能是C#)项目文件中,通常会有一行如下所示:

<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>

对于没有“开发”配置的项目,您可以通过添加另一行来获得所需的行为......就在那之前......

<Configuration Condition=" '$(Configuration)' == 'Dev' ">Release</Configuration>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>

这样,当您使用指定的“Dev”构建时,这些项目将构建其Release配置,这将模拟解决方案的配置管理器(我倾向于将其视为功能的憎恶)的行为直接在项目文件本身,这是正确的地方。

另一种方法是使用您将传递给MSBuild任务的项目数组上的AdditionalProperties元数据来构建项目。您可以为感兴趣的项目指定以下内容......

<SolutionItem Include="./PathTo/SomeProject.csproj">
   <AdditionalProperties Condition="'$(Configuration)' == 'Dev'"
      >Configuration=Release</AdditionalProperties>
</SolutionItem>

(摘自“MSBuild Trickery”一书#80)

答案 1 :(得分:0)

我不认为可以通过MSBuild的命令参数来完成。 您可以做的是使用Visual Studio的配置管理器和解决方案配置'Dev'将没有'Dev'配置的项目指向Release。

然后你为Dev配置做一个解决方案构建,一些项目将在发布版本中构建。