gpt4 book ai didi

c# - 如何使用名为 Configuration 的 MSBuild 命令行参数作为条件编译符号?

转载 作者:行者123 更新时间:2023-11-30 15:34:47 24 4
gpt4 key购买 nike

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

如果命令行类似于这样:

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

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

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

用户会看到这个:

You are running the Release version

我知道我们可以在命令提示符下声明条件编译符号(#defines),比如它是如何定义的in this articlethis one .但我想使用名为 Configuration 的现有变量。

最佳答案

没有办法做到这一点,除非你说=使用#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>

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

关于c# - 如何使用名为 Configuration 的 MSBuild 命令行参数作为条件编译符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15778453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com