2012-05-31 73 views
16

我有一个C#.Net 4类库,我认为我已经设置为Azure工作者角色,即类实现了Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint,并且具有Run()和OnStart()方法。但是,当我在空的Windows Azure项目中的Roles文件夹上单击鼠标右键时,然后单击添加用于添加“解决方案中的工作人员角色项目...”的选项为灰色。我需要为VS2010做些什么来实现解决方案中潜在的员工角色项目?为什么Azure在解决方案中添加>工作人员角色项目...在VS2010中变灰了?

enter image description here

回答

30

的 “添加> Worker角色工程解决方案...” 只显示工作者作用的项目不类库。尽管它们看起来一样,但它们不是。

您可以通过创建一个辅助角色的项目如下:

  • 当创建一个新的云项目

enter image description here

  • 通过右击云项目

enter image description here

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

现在,您还可以将类库转换为工作角色项目。用鼠标右键单击该类库,并选择卸载项目 ..然后(一旦这样卸载),编辑项目文件,并在第一组中添加角色类型元素:

<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将承认该项目为辅助角色,你就可以将其添加到云计算项目:

enter image description here

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

+0

谢谢Sandrino - 我会去编辑项目文件。 – dumbledad

+0

有趣的是,当我右键单击类库时没有“编辑项目文件”,但它很容易在记事本中进行编辑。 – dumbledad

+0

对不起,可能只有通过VS扩展(VSCommands,PowerCommands或Productivity Power Tools)才能使用此按钮。在这种情况下,在记事本中编辑也是一个有效的解决方案。 –

相关问题