以编程方式(使用C#)确定当前的Visual Studio构建配置

时间:2014-07-24 19:46:01

标签: msbuild visual-studio-2013

我的Visual Studio 2013 C#应用程序需要以编程方式确定是否已将另一个Visual Studio解决方案保存在"构建模式"或"发布模式"。是否有用于实现此目的的API?

或者,我正在考虑使用MSBuild API构建解决方案,然后检查应用程序是否具有调试符号。有办法做到这一点吗?

3 个答案:

答案 0 :(得分:1)

在调试模式下构建程序集时,编译器会自动添加[assembly:DebuggableAttribute]。您可以使用反射来查看程序集中是否存在该属性。请查看此处了解如何从程序集中读取属性的详细信息:How to read assembly attributes

答案 1 :(得分:1)

调试发布或任何其他自定义配置只是名称,任何人都可以在高级构建设置中使其看起来像另一个项目属性或通过直接调整.csproj中的属性。这些标志将决定你如何识别"调试"装配和多少"调试"调试真的意味着。也就是说,默认属性组合的输出差异在Debuggable汇编属性中,两个默认配置都有,您可以使用ILSpy自己查看。

<强>调试

[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default
 | DebuggableAttribute.DebuggingModes.DisableOptimizations
 | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints
 | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]

<强>版本

[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]

关于如何阅读此Debuggable属性值 - 请参阅@MobyDisk answer。

答案 2 :(得分:0)

我目前正在使用Web.config解决同样的问题:

我的Web.config(默认情况下这相当于Web.Debug.config和Web.Development.config)文件包含(使用上面的命名):

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <appSettings>
    <add key="mode" value="build"/>
    <add key="anotherKey" value="another value"/>
  </appSettings>
</configuration>

我的Web.Test.config和Web.Release.config文件包含:

 <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <appSettings>
    <add key="mode" value="release" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
  </appSettings>
</configuration>

然后您可以使用以下方式访问'模式':

WebConfigurationManager.AppSettings.Get("mode");

[只要你保持一致,你就不必使用'模式'作为密钥]