发布时不编译调试模式的代码
Code for debug mode is not compiled when publishing
有些地方我使用 #if DEBUG
编译器指令来选择要编译的代码。直到不久前,我才能够在调试或发布模式下发布我的 ASP.NET MVC 应用程序。事实上我仍然可以做到这一点。但是现在,出于某种原因,无论我选择哪种模式,我都只能在输出中获得发布代码。如果我使用 .NET Reflector 查看生成的 dll,我可以看到 #if DEBUG
之后的代码不存在。
我已经在项目属性中检查了调试模式的 Define DEBUG constant
。我能让它工作的唯一方法是明确定义 DEBUG 常量。除了发布时,还有其他地方可以配置发布设置吗?
经过大量挖掘(并在发布此问题之后),我在 ProjectName|Properties|PublishProfiles 下找到了一个名为 MyProjectName.pubxml 的文件:
我在那里找到了这一行:
<DebugSymbols>False</DebugSymbols>
将其设置为 True 后,它终于得到解决并按预期工作。我还注意到 LastUsedBuildConfiguration
的值是 Release,尽管它在 fact.So 中是 Debug,显然这个文件在某些时候未能更新。希望这能帮助那些浪费时间的候选人。
编辑
我又遇到了同样的问题,但这次我需要相反的方法,即发布模式。这次更改上述文件并没有解决问题。所以我决定做我认为最好的事情:只需删除 PublishProfiles 文件夹,以便在您下次尝试发布应用程序时提示您创建新的发布配置文件。那解决了问题。
EDIT2
伙计,我没有意识到有一个选择配置的选项。出来我们需要选择我们需要发布到的配置,无论在 visual studio 本身选择了什么配置。
有些地方我使用 #if DEBUG
编译器指令来选择要编译的代码。直到不久前,我才能够在调试或发布模式下发布我的 ASP.NET MVC 应用程序。事实上我仍然可以做到这一点。但是现在,出于某种原因,无论我选择哪种模式,我都只能在输出中获得发布代码。如果我使用 .NET Reflector 查看生成的 dll,我可以看到 #if DEBUG
之后的代码不存在。
我已经在项目属性中检查了调试模式的 Define DEBUG constant
。我能让它工作的唯一方法是明确定义 DEBUG 常量。除了发布时,还有其他地方可以配置发布设置吗?
经过大量挖掘(并在发布此问题之后),我在 ProjectName|Properties|PublishProfiles 下找到了一个名为 MyProjectName.pubxml 的文件:
我在那里找到了这一行:
<DebugSymbols>False</DebugSymbols>
将其设置为 True 后,它终于得到解决并按预期工作。我还注意到 LastUsedBuildConfiguration
的值是 Release,尽管它在 fact.So 中是 Debug,显然这个文件在某些时候未能更新。希望这能帮助那些浪费时间的候选人。
编辑
我又遇到了同样的问题,但这次我需要相反的方法,即发布模式。这次更改上述文件并没有解决问题。所以我决定做我认为最好的事情:只需删除 PublishProfiles 文件夹,以便在您下次尝试发布应用程序时提示您创建新的发布配置文件。那解决了问题。
EDIT2
伙计,我没有意识到有一个选择配置的选项。出来我们需要选择我们需要发布到的配置,无论在 visual studio 本身选择了什么配置。