C#如何检查解决方案配置

4

在我的项目中,我没有使用标准的DebugRelease解决方案配置,而是使用了自定义配置,例如ReleaseConfig1。

在C#中,有没有办法检查项目是使用哪个发布配置构建的。

我尝试了下面的代码,但它总是进入else分支:

#if ReleaseConfig1
//blah
#else
//blah blah
#endif

我的解决方案配置大致如下:

ReleaseConfig1:
Project 1: Release
Project 2: ReleaseSpecialXXX
Project 3: Debug

ReleaseConfig2:
Project 1: ReleaseSpecialZZZ
Project 2: Release
Project 3: Debug

定义“不起作用” - 您在预处理器条件语句中究竟放置了什么内容? - Colin Mackay
3
这是否包括在内?https://dev59.com/y3RB5IYBdhLWcg3wyqOo - Fishcake
@Colin:由于解决方案配置似乎没有被定义为常量,因此它总是返回false。 @Fishcake:实际上我认为可能会。除非有人能够说明,否则我想答案是“不,不能直接实现”。 - row1
嗨@row1,你找到合适的解决方案了吗?我认为我和你做的一样;我总是使用“解决方案配置”来从测试、生产和验收数据库进行切换。 - Dirk Boer
3个回答

2

项目是MSBuild的实际活动部分。解决方案只是VS中的一个东西,并不涉及构建,除了确定构建顺序。任何真正影响程序集输出的事情都是在项目中完成的。

使用标准的DEBUG常量确实是正确的方式。自动生成的项目在创建时已设置为执行此操作,因此使用这些配置/约定是一个非常好的方法,可以避免繁琐的自定义配置。


Visual Studio所称的“解决方案”,最初被称为“工作区”; 请参阅为Visual C++项目创建的文件类型。dsw文件类型用于在较新版本的VS中成为解决方案的工作区; 我认为从.Net版本开始。 - Sam Hobbs

0
也许你可以为每个配置定义编译时常量。你可以对它们进行检查。
我相信标准的Debug配置已将DEBUG设置为true等。

谢谢,但似乎您需要为每个项目配置而不是解决方案配置进行操作。 - row1

0

我认为它相似但又不同。我目前对于那个问题的答案的理解是,为了让#if起作用,我需要为每个项目和每个项目配置定义条件编译符号。我希望能够确定解决方案配置而不是项目配置。 - row1
Fishcake 的评论解决了你最初的问题吗? - MattC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接