能否根据DEBUG/RELEASE构建配置自动包含或排除项目?
自动根据构建配置包含/排除测试项目
方法1:修改解决方案文件(.sln)
直接编辑解决方案的.sln文件,给测试项目添加加载条件,让它仅在DEBUG配置下显示并参与构建:
找到解决方案中对应ClientPeer.TestConsole项目的条目(格式如下):
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClientPeer.TestConsole", "ClientPeer.TestConsole\ClientPeer.TestConsole.csproj", "{PROJECT_GUID}" EndProject
修改为带条件的版本:
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClientPeer.TestConsole", "ClientPeer.TestConsole\ClientPeer.TestConsole.csproj", "{PROJECT_GUID}" Condition = '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' EndProject
注意替换{PROJECT_GUID}为项目实际的GUID,Debug|AnyCPU可根据你的平台配置调整(比如Debug|x64)
方法2:修改测试项目的.csproj文件
若不想改动解决方案,可在ClientPeer.TestConsole.csproj中添加编译条件,让项目在RELEASE配置下不参与构建:
在项目根<Project>节点下添加:
<PropertyGroup> <Build Condition="'$(Configuration)' != 'Debug'">false</Build> <DeployOnBuild Condition="'$(Configuration)' != 'Debug'">false</DeployOnBuild> </PropertyGroup>
补充说明
- 方法1会让测试项目在RELEASE配置下直接从解决方案资源管理器中消失,彻底规避编译报错。
- 方法2中项目仍会显示在解决方案里,但RELEASE时不会编译,结合你已用
#if DEBUG包裹的InternalsVisibleTo特性,不会触发内部访问权限相关错误。
内容的提问来源于stack exchange,提问作者IAbstract
相关产品推荐
相关产品推荐

