5

我想显示一个字符串,告诉用户使用哪个构建配置来构建应用程序。例如:

如果命令行类似这样:

msbuild project.sln /t:Build /p:Configuration=Release

然后在源代码中,我想这样做:

Console.Writeline("You are running the " + <get the /p:Configuration value> + " version" );

用户会看到:

您正在运行发布版本

我知道我们可以在命令提示符下声明条件编译符号(#defines),比如在这篇文章这篇文章中是如何定义的。但我想使用名为Configuration.

4

1 回答 1

4

没有办法做到这一点,除非你说=使用#if。MSBuild 配置名称只是项目文件中用于构建项目特定风格的一组配置的名称。默认情况下,您无法从代码中访问此配置名称。

我看到两种方法可以更改代码中的字符串:

a)正如你所说 - 你可以指定条件编译符号,所以你可以做类似的事情

#if DEBUG
const string Flavor = "Debug";
#else
const string Flavor = "Release";
#endif
...
Console.WriteLine("You are running the " + Flavor + " version" );

b)您可以使用您的项目文件并根据配置包含不同的文件集。如果您将卸载项目并将 csproj 作为文件打开 - 您将看到例如

<ItemGroup>
  <Compile Include="MyApp.cs" />
</ItemGroup>

您可以更改为:

<ItemGroup>
  <Compile Include="MyApp.Release.cs" Condition="'$(Configuration)'=='Release'" />
  <Compile Include="MyApp.Debug.cs" Condition="'$(Configuration)'=='Debug'" />
</ItemGroup>

因此,这就是您将为每个配置包含不同文件集的方式,您可以在其中指定用户现在拥有的配置。

于 2013-04-03T06:09:55.530 回答