17

我有一个 C# .Net 4 类库,我认为我已将其设置为 Azure Worker Role,即该类实现 Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint 并具有 Run() 和 OnStart() 方法。但是,当我右键单击我的空 Windows Azure 项目中的角色文件夹并单击添加选项以添加“解决方案中的工作人员角色项目...”时,它是灰色的。我需要为 VS2010 做些什么才能意识到解决方案中有一个潜在的工人角色项目?

在此处输入图像描述

4

1 回答 1

31

解决方案中的添加 > 工作人员角色项目... ”仅显示工作人员角色项目而不是类库。尽管它们看起来一样,但它们并非如此。

您可以使用以下命令创建工作者角色项目:

  • 创建新的云项目时

在此处输入图像描述

  • 通过右键单击云项目

在此处输入图像描述

然后,如果您愿意,您将能够将该工作人员角色项目添加到其他云项目中。在这种情况下,“解决方案中的添加 > 工作者角色项目... ”菜单选项将被启用。

现在,您还可以将类库“转换”为辅助角色项目。右键单击类库并选择Unload Project .. 然后(一旦卸载), 编辑项目文件并在第一个属性组中添加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>

最后 - 将项目重新加载到解决方案中 -> 右键单击​​ Reload Project。(注意:如果 Xml 文件仍然打开,您会被要求关闭它。这是完美的。说是并关闭它)。.. 现在您的类库已重新添加回来,但它是一个工人角色类库

如果执行此操作,Visual Studio 会将项目识别为辅助角色,并且您将能够将其添加到云项目中:

在此处输入图像描述

注意:您的类库将需要派生自RoleEntryPoint的类。更多信息:http: //blogs.msdn.com/b/jnak/archive/2010/02/11/windows-azure-roleentrypoint-method-call-order.aspx

于 2012-05-31T09:44:05.540 回答