У рішення C # я додав існуючий проект.
Після цього Visual Studio додав такий запис у інші файли .csproj:
<ItemGroup>
<Service Include="{B4F97281-0DBD-4835-9ED8-7DFB966E87FF}" />
</ItemGroup>
Для чого це?
Чи можна її видалити?
У рішення C # я додав існуючий проект.
Після цього Visual Studio додав такий запис у інші файли .csproj:
<ItemGroup>
<Service Include="{B4F97281-0DBD-4835-9ED8-7DFB966E87FF}" />
</ItemGroup>
Для чого це?
Чи можна її видалити?
Відповіді:
У мене був подібний випадок, коли це було додано:
<ItemGroup>
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
</ItemGroup>
Виявляється, це включення було створено спеціально VS2013, якщо ви створюєте тестовий проект NUnit, але забудьте позначити його як тестовий проект, як описано в цій відповіді від Microsoft:
Така поведінка навмисна.
Для підтримки сторонніх тестових рамок, таких як NUnit та XUnit, Visual Studio 2012 завантажив Test Explorer на відкритому рішенні, незалежно від того, чи містив він тестові проекти. Це додало секунд затримки до запуску та відкритого сценарію рішення для всіх користувачів, більшість з яких не використовують тести.
У Visual Studio 2013 ми змінили його так, що пакет Test Explorer завантажується лише тоді, коли рішення містить один або кілька тестових проектів. Тестові проекти визначаються двома різними способами. Проекти, створені з одного із вбудованих шаблонів тестових проектів, ідентифікуються за допомогою GUID типів проекту. Інші проекти, такі як проект бібліотеки класів з тестами XUnit або NUnit, ідентифікуються Test Explorer під час першого тестового виявлення та «позначаються»
<Service/>
елементом.
Особисто мені не подобається, що ця послуга додається до моїх файлів проекту, і я вважаю, що це скоріше як обхід, а не правильне рішення. Тож маркування ваших тестових проектів як тестових проектів здається мені більш правильним, і цього можна досягти, додавши це до першого PropertyGroup
:
<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<TestProjectType>UnitTest</TestProjectType>
{3AC096D0-A1C2-E12C-1390-A8335801FDAB}
означає Тестовий проект та {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- C #. Для інших посібників типу проекту перейдіть сюди
ProjectTypeGuids
теж вважаю за краще, але якщо ви займаєтеся розробкою крос-платформ і використовуєте MonoDevelop, ви не зможете відкривати {3AC096D0-A1C2-E12C-1390-A8335801FDAB}
проекти: "Монодевелоп цей тип проекту не підтримується". Обидва IDE здаються щасливими, якщо ви просто видалите GUID тестового проекту.
Хороша річ у відомих / постійних GUID - це те, що вони дуже унікальні і тому їх дуже легко шукати в Google. Що я і зробив, і знайшов:
це і це , а також інші цікаві хіти.
Схоже, це насправді відома помилка в інструменті T4 DSL, який постачається разом із SDK. І на щастя, це досить легко вирішити, змінивши деякі ключі реєстру.