bor*_*ula 42 c# build-process assemblies release-mode debug-mode
我正在开始部署我的Web应用程序,我需要保证所有要部署的程序集都是使用Release配置构建的.我们的系统是使用C#/.Net 3.5开发的.
有没有办法实现这个目标?
Dav*_*vid 39
检查一下.我们的想法是使用Assembly.GetCustomAttributes()和搜索汇编属性列表,DebuggableAttribute然后查找此属性是否具有IsJITTrackingEnabled属性集.
public bool IsAssemblyDebugBuild(Assembly assembly)
{
return assembly.GetCustomAttributes(false).OfType<DebuggableAttribute>().Any(da => da.IsJITTrackingEnabled);
}
Run Code Online (Sandbox Code Playgroud)
Rub*_*ias 27
我喜欢大卫的建议,但你也可以这样走(AssemblyInfo.cs):
#if DEBUG
[assembly: AssemblyDescription("Your application assembly (DEBUG version)")]
#else if RELEASE
[assembly: AssemblyDescription("Your application assembly (RELEASE version)")]
#endif
Run Code Online (Sandbox Code Playgroud)
这更加人性化,因为任何人都可以右键单击该程序集,选择Properties并转到Details选项卡.
如果它是你的程序集,我相信使用AssemblyConfiguration属性是最好的方法.它被记录为"指定程序集的构建配置,例如零售或调试".
根据您的构建配置,您可能具有以下代码:
#if DEBUG
[assembly: AssemblyConfiguration("Debug")]
#else
[assembly: AssemblyConfiguration("Release")]
#endif
Run Code Online (Sandbox Code Playgroud)
然后检查程序集属性:
public static bool IsAssemblyConfiguration(Assembly assembly, string configuration)
{
var attributes = assembly.GetCustomAttributes(typeof(AssemblyConfigurationAttribute), false);
if (attributes.Length == 1)
{
var assemblyConfiguration = attributes[0] as AssemblyConfigurationAttribute;
if (assemblyConfiguration != null)
{
return assemblyConfiguration.Configuration.Equals(configuration, StringComparison.InvariantCultureIgnoreCase);
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
(我知道R. Schreurs对Rubens Farias的评论也是如此,但我在看到评论之前在其他地方找到了这些信息,所以我认为这需要一个更重要的条目,如完整的回复,而不是评论)
| 归档时间: |
|
| 查看次数: |
21417 次 |
| 最近记录: |