アセンブリの完全な名前を取得するツールを作成する
最終更新日: 2010年7月6日
適用対象: SharePoint Foundation 2010
SharePoint Foundation 開発プロジェクトでは、コードと XML のマークアップがよく混在しています。4 つの部分で構成される、新しいアセンブリの完全名をプロジェクト ファイル (XML 構成ファイルなど) に追加することはよくあります。Visual Studio プロジェクトが Visual Studio の SharePoint 2010 プロジェクト テンプレートのいずれかに基づき、アセンブリの完全名をほとんどの種類のプロジェクト ファイルに含める必要がある (ただし, .cs または .vb ファイル、あるいは互換性のあるその他のファイルには含めない) 場合、単にトークン $SharePoint.Project.AssemblyFullName$ を挿入するだけで済みます。プロジェクトを構築して展開すると、Visual Studio はトークンを、実際に展開されるファイルのコピー内にある完全なアセンブリ名で置き換えます (SharePoint 指向の Visual Studio トークンの使用方法については、「置き換え可能なパラメーター」を参照してください)。
ただし、完全なアセンブリ名を、Visual Studio トークンをサポートしないファイルの種類に挿入することが必要になる場合があります。また、SharePoint 2010 のプロジェクト テンプレートを使用しない場合もあります。たとえば、SharePoint の管理機能の一部の拡張には、一般的な Microsoft .NET Framework コンソール アプリケーションのみが含まれます。この場合、実際の完全なアセンブリ名を認識する必要があります。このトピックでは、アセンブリの完全名を取得するコマンド ライン ツールを作成する方法、およびツールを Visual Studio の [ツール] メニューの項目として追加する方法について説明します。これにより、このメニュー項目を使用して、開発中のアセンブリの完全名を取得することができます。
アセンブリの完全名を取得するコマンド ライン ツールを作成するには
[スタート] メニューで Visual Studio を右クリックし [管理者として実行] を選択して、Visual Studio を管理者として実行します。
新しいコンソール アプリケーション プロジェクトを作成します。[新しいプロジェクト] ダイアログで [Visual C#] または [Visual Basic] を選択し、[Windows] を選択して、[コンソール アプリケーション] テンプレートを選択します。アプリケーションに "GetAssemblyName" という名前を付け、[OK] をクリックします。
Program.cs (または Program.vb) ファイルのコンテンツ全体を、次の例のどちらかで置き換えます (プログラミング言語によって異なります)。
using System; using System.Reflection; using System.IO; namespace GetAssemblyName { class Program { static void PrintUsage() { Console.WriteLine("Usage: GetAssemblyName.exe <path and filename>\n"); Console.WriteLine(@"Example: GetAssemblyName.exe C:\MyAssembly.dll"); Console.Read(); } static void Main(string[] args) { if (args.Length < 1 || args[0] == "?") { PrintUsage(); return; } string filename = args[0]; try { AssemblyName an = AssemblyName.GetAssemblyName(filename); Console.WriteLine("Fully specified assembly name:\n"); Console.WriteLine(an.ToString()); } catch (FileNotFoundException) { Console.WriteLine("Cannot locate the assembly. Check the path and try again."); } Console.Read(); } } }
Imports System Imports System.IO Imports System.Reflection Module Module1 Sub PrintUsage() Console.WriteLine("Usage: GetAssemblyName.exe <path and filename>" + vbCrLf) Console.WriteLine("Example: GetAssemblyName.exe C:\MyAssembly.dll") Console.Read() End Sub Sub Main(ByVal cmdArgs() As String) If cmdArgs.Length = 0 OrElse cmdArgs(0) = "?" Then PrintUsage() Return End If Dim filename As String = cmdArgs(0) Try Dim an As AssemblyName = AssemblyName.GetAssemblyName(filename) Console.WriteLine("Fully specified assembly name:" + vbCrLf) Console.WriteLine(an.ToString()) Catch Console.WriteLine("Cannot locate the assembly. Check the path and try again.") End Try Console.Read() End Sub End Module
アプリケーションをコンパイルしてテストします。
ツールが適切に機能している場合は、実行可能ファイルをコンピューター上の永続フォルダーにコピーします。
アセンブリの完全名を取得するための項目を [ツール] メニューに追加するには
Visual Studio で、[ツール] メニューから [外部ツール] を選択します。
[外部ツール] ダイアログで、[追加] をクリックし、[タイトル] に「アセンブリの完全名を取得する」と入力します。
GetAssemblyName.exe を参照することで、[コマンド] ボックスに入力します。
[引数] ボックスに、「$(TargetPath)」と入力します (大文字と小文字を区別)。
[出力ウィンドウを使用] チェック ボックスをオンにします。
[OK] をクリックします。新しいコマンドが、[ツール] メニューに追加されます。
4 つの部分で構成されるアセンブリ名が必要な場合は必ず、[ツール] メニューの [アセンブリの公開キーを取得する] をクリックします。これにより、公開キー トークンが [出力] ウィンドウに表示されます。
注意
完全なアセンブリ名には、アセンブリが最初にコンパイルされるまで存在しない公開キー トークンが含まれます。したがって、ツールを使用する前にプロジェクトをコンパイルする必要があります。