Почему «Добавить Azure» ›Проект рабочей роли в решении… выделен серым цветом в VS2010?

У меня есть библиотека классов C # .Net 4, которую, как мне кажется, я настроил как рабочую роль Azure, то есть класс реализует Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint и имеет методы Run () и OnStart (). Однако, когда я щелкаю правой кнопкой мыши папку «Роли» в моем пустом проекте Windows Azure и нажимаю «Добавить», опция добавления «Проект рабочей роли в решение…» становится серой. Что мне нужно сделать, чтобы VS2010 понял, что в решении есть проект потенциальной рабочей роли?

введите описание изображения здесь


person dumbledad    schedule 31.05.2012    source источник


Ответы (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

person Sandrino Di Mattia    schedule 31.05.2012
comment
Что интересно, когда я щелкнул правой кнопкой мыши по библиотеке классов, редактировать файл проекта не было, но редактировать его в Блокноте было несложно. - person dumbledad; 31.05.2012
comment
Извините, возможно, эта кнопка доступна только через расширение VS (VSCommands, PowerCommands или Productivity Power Tools). В этом случае редактирование в блокноте также является допустимым решением. - person Sandrino Di Mattia; 31.05.2012
comment
Вы можете выгрузить проект, а затем щелкнуть правой кнопкой мыши на выгруженном проекте, чтобы отредактировать его. - person Stian Standahl; 12.12.2012
comment
Solid Sandrino, большое спасибо, добавил тег RoleType в файл proj, и он работал как чемпион. - person Ryan Anderson; 01.10.2013
comment
Идеально @SandrinoDiMattia :) Просто добавил в ответ материал о проекте «Выгрузка». - person Pure.Krome; 16.10.2013