6

私はVS2010/2012を使用していますが、アセンブリがどのように構築されているかを確認する方法があるかどうかは疑問でした。アセンブリの作成方法の決定方法

デバッグで実行すると、#if DEBUGを使用してデバッグ情報をコンソールに書き出します。

しかし、たくさんのアセンブリで終わると、どのようにビルドされているかを確認する方法はありますか?バージョン番号を取得するのは簡単ですが、ビルドタイプをチェックする方法を見つけることができませんでした。

+2

とすることができます第二の方法を好みます"? – Kippie

+2

そして、あなたは本当に*知りたいことは何ですか? (条件付きコンパイルシンボル?最適化オプション?デバッグオプション?) –

+0

達成しようとしていることを明確にすることはできますか? –

答えて

3

のいずれかを使用することができます:

コード内 #if DEBUG

#if DEBUG 
     public const bool IsDebug = true; 
#else 
     public const bool IsDebug = false; 
#endif 

#if DEBUG 
[assembly: AssemblyConfiguration("Debug")] 
#else 
[assembly: AssemblyConfiguration("Release")] 
#endif 

または定数を使用して、私はそう私はあなたが「ビルドの種類を確認することによって何を意味するコードの両方によって、それを読んで、Windowsエクスプローラ

+0

私はあなたに答えましたが、元の投稿とブログ投稿も読んで、次のようなちょっと変わったバージョンのIsAssemblyDebugBuildで終わりました: (x = DebuggableAttribute)!= null?(DebuggableAttributeとしてのx).IsJITTrackingEnabled:false); ' – Verakso

3

一度コンパイルすると、メタデータを自分で作成しない限り、作成できません。メタデータassemblyinfo

private bool IsAssemblyDebugBuild(string filepath) 
{ 
    return IsAssemblyDebugBuild(Assembly.LoadFile(Path.GetFullPath(filepath))); 
} 

private bool IsAssemblyDebugBuild(Assembly assembly) 
{ 
    foreach (var attribute in assembly.GetCustomAttributes(false)) 
    { 
     var debuggableAttribute = attribute as DebuggableAttribute; 
     if(debuggableAttribute != null) 
     { 
      return debuggableAttribute.IsJITTrackingEnabled; 
     } 
    } 
    return false; 
} 

または使用:

たとえば、3通りの方法がありますAssemblyConfigurationAttributeまたは.NET 4.5のAssemblyMetadataAttribute

#if DEBUG 
[assembly: AssemblyConfiguration("Debug")] 
#else 
[assembly: AssemblyConfiguration("Release")] 
#endif 

または

#if DEBUG 
[assembly: AssemblyMetadata("DefinedVariable", "DEBUG")] 
#endif 
+0

+1 .net4.5でAssemblyMetadataについて知りませんでした – giammin

関連する問題