Msbuild 以编程方式(使用C#)确定当前Visual Studio生成配置

Msbuild 以编程方式(使用C#)确定当前Visual Studio生成配置,msbuild,visual-studio-2013,Msbuild,Visual Studio 2013,我的Visual Studio 2013 C#应用程序需要以编程方式确定另一个Visual Studio解决方案是以“构建模式”还是“发布模式”保存的。有实现这一点的API吗 或者,我正在考虑使用MSBuild API构建解决方案,然后检查应用程序是否具有调试符号。有没有办法做到这一点 在调试模式下构建程序集时,编译器会自动添加[assembly:DebuggableAttribute]。您可以使用反射来查看该属性是否存在于程序集上。在此处查看有关如何从程序集读取属性的详细信息:在调试模式下构建

我的Visual Studio 2013 C#应用程序需要以编程方式确定另一个Visual Studio解决方案是以“构建模式”还是“发布模式”保存的。有实现这一点的API吗


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

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

在调试模式下构建程序集时,编译器会自动添加[assembly:DebuggableAttribute]。您可以使用反射来查看该属性是否存在于程序集上。在这里查看有关如何从程序集读取属性的详细信息:

调试发布版或任何其他自定义配置都只是名称,任何人都可以在项目属性的高级生成设置中或通过直接调整
.csproj
中的属性使其中一个看起来像另一个。这些标志将指示如何识别“调试”程序集以及“调试”调试的实际意义。也就是说,default属性组合的输出差异在于
debugable
assembly属性,两种默认配置都有它,您可以使用它自己查看

调试

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

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

有关如何读取此
可调试属性值的信息,请参阅@MobyDisk answer。

调试发布或任何其他自定义配置只是名称,任何人都可以在项目属性的高级生成设置中或直接在
.csproj
中调整属性,使其中一个与另一个相似。这些标志将指示如何识别“调试”程序集以及“调试”调试的实际意义。也就是说,default属性组合的输出差异在于
debugable
assembly属性,两种默认配置都有它,您可以使用它自己查看

调试

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

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

关于如何读取此
debugable
属性值,请参阅@MobyDisk answer。

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

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


[您不必对密钥使用'mode',只要您保持一致]

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

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


[您不必对密钥使用'mode',只要您是一致的]

您可以在“#if DEBUG”中声明一个符号,然后通过反射检查该符号。@MobyDisk:这是一个非常酷的想法,但对于我们提供的所有样本,这必须在整个公司都适用。因此,我希望找到一种解决方案,不需要所有的示例编写者更新他们的代码以使我的应用程序正常运行。您可以在“#if DEBUG”中声明一个符号,然后通过反射检查该符号。@MobyDisk:这是一个非常酷的主意,但对于我们提供的所有示例,这必须在整个公司都适用。因此,我希望有一个解决方案,不需要所有的示例编写者更新他们的代码,我的应用程序才能正常运行。
WebConfigurationManager.AppSettings.Get("mode");