我希望通过 C# Visual Studio 项目添加一个新的构建配置。我希望它像调试构建配置一样,但有一个区别。即使调试配置发生变化,我也希望它始终像调试配置一样。
我该怎么做呢?
我希望通过 C# Visual Studio 项目添加一个新的构建配置。我希望它像调试构建配置一样,但有一个区别。即使调试配置发生变化,我也希望它始终像调试配置一样。
我该怎么做呢?
这是使用不同预处理器定义的示例。您必须手动编辑项目文件。我建议您在 VS 本身中执行此操作,因为它具有语法突出显示和自动完成功能。在普通的 csproj 文件中,Debug|AnyCPU
配置的属性定义如下(1):
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
假设您想重用除 之外的所有内容DefineConstants
,您创建一个单独的项目文件debug.props
仅用于定义公共属性,将其放在与项目文件相同的目录中:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
</Project>
然后就是调整主工程文件导入通用文件,根据配置设置一些不同的值。这是通过将 (1) 替换为:
<Import Project="$(MsBuildThisFileDirectory)\debug.props"
Condition="'$(Configuration)'=='Debug' Or '$(Configuration)'=='MyDebug'" />
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DefineConstants>DEBUG</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'MyDebug|AnyCPU' ">
<DefineConstants>TRACE;DEBUG</DefineConstants>
</PropertyGroup>
应该很清楚这是做什么的:它导入具有公共属性的文件(如果配置是 Debug 或 MyDebug),然后根据使用的 Configuration 为 DefineConstants 设置不同的值。由于现在有一个用于 Configuration==MyDebug 的 PropertyGroup,VS 将自动识别它,因此您现在可以在配置管理器中选择MyDebug
配置。一旦你这样做,它会影响这样的代码:
#if TRACE //is now only defined for MyDebug config, not for Debug
Console.WriteLine( "hello there" );
#endif