Azureワーカーロールとして設定したと思われるC#.Net 4クラスライブラリがあります。つまり、クラスはMicrosoft.WindowsAzure.ServiceRuntime.RoleEntryPointを実装し、Run()メソッドとOnStart()メソッドを持っています。ただし、空のWindows AzureプロジェクトのRolesフォルダーを右クリックし、[追加]をクリックすると、[ソリューション内のワーカーロールプロジェクト…]がグレー表示されます。ソリューションに潜在的なワーカーロールプロジェクトがあることを実現するには、VS2010で何をする必要がありますか?
1 に答える
「ソリューション内の追加>ワーカーロールプロジェクト...」には、クラスライブラリではなくワーカーロールプロジェクトのみが表示されます。見た目は同じですが、そうではありません。
以下を使用して、ワーカーロールプロジェクトを作成できます。
- 新しいクラウドプロジェクトを作成するとき
- クラウドプロジェクトを右クリックする
その後、必要に応じて、そのワーカーロールプロジェクトを他のクラウドプロジェクトに追加できます。その場合、「ソリューション内の追加>ワーカーロールプロジェクト...」メニューオプションが有効になります。
これで、クラスライブラリをワーカーロールプロジェクトに「変換」することもできます。クラスライブラリを右クリックし、[プロジェクトのアンロード]を選択します。次に(アンロードされたら)、 [プロジェクトファイルの編集]を選択し、最初のプロパティグループにRoleType要素を追加します。
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{7E9F972F-BE92-4CF7-998D-E76B61B21C37}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ClassLibrary1</RootNamespace>
<AssemblyName>ClassLibrary1</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<RoleType>Worker</RoleType> <-------------------- HERE
</PropertyGroup>
最後に、プロジェクトをソリューションにリロードし直します->[プロジェクトのリロード]を右クリックします。(注:Xmlファイルがまだ開いている場合は、閉じるように求められます。これは完璧です。「はい」と言って閉じてください)。..これで、クラスライブラリが再度追加されましたが、これはワーカーロールクラスライブラリです。
これを行うと、Visual Studioはプロジェクトをワーカーの役割として認識し、クラウドプロジェクトに追加できるようになります。
注:クラスライブラリには、RoleEntryPointから派生したクラスが必要です。詳細: http: //blogs.msdn.com/b/jnak/archive/2010/02/11/windows-azure-roleentrypoint-method-call-order.aspx