Это ожидаемое поведение в Cypress. Я считаю, что вы должны сохранять файлы cookie каждые it()
/ context()
,
beforeEach('Preserve the cookies to persist the state', () => {
Cypress.Cookies.preserveOnce('sessionid', 'csrftoken')
})
В приведенном выше сценарии [ 114] и csrftoken
- имена токенов, которые я хочу сохранить / сохранить после каждого теста.
Альтернативой является внесение в белый список маркеров cookie, которые вы хотите сохранить,
Cypress.Cookies.defaults({whitelist: 'sessionid'});
Проблема возникает из-за того, что задача AspNetCompiler MSBuild, используемая в целевом объекте AfterBuild проекта ASP.NET MVC, ожидает ссылки на библиотеки DLL в папке bin веб-проекта.
На настольной сборке папка bin находится там, где вы ее ожидаете, в дереве исходных текстов.
Однако TFS Teambuild компилирует выходные данные вашего исходного кода в другой каталог на сервере сборки. Когда запускается задача AspNetCompiler, она не может найти каталог bin для ссылки на требуемую DLL, и вы получаете исключение.
Решение состоит в том, чтобы изменить цель AfterBuild проекта MVC следующим образом:
<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler Condition="'$(IsDesktopBuild)' != 'false'" VirtualPath="temp" PhysicalPath="$(ProjectDir)\..\$(ProjectName)" />
<AspNetCompiler Condition="'$(IsDesktopBuild)' == 'false'" VirtualPath="temp" PhysicalPath="$(PublishDir)\_PublishedWebsites\$(ProjectName)" />
</Target>
Это изменение позволяет выполнить компиляцию Виды на рабочем столе и на сервере сборки TFS.
Невозможно предварительно создать приложение ASP.NET MVC.
Я полагаю, вы имели в виду, что вы изменили следующие настройки в файле .csproj:
<MvcBuildViews>true</MvcBuildViews>
Настройки, которые вы опубликовали в своем файле. вопрос не должен касаться Если он работает на вашем локальном компьютере, то, очевидно, вы можете предварительно собрать приложение ASP.NET MVC.
Я думаю, вам нужно отследить, что отличается между вашей средой сборки TFS и вашими локальными машинами VS. Может быть, он использует другую версию MsBuild или что-то в этом роде.
Попробуйте выполнить обе сборки с подробным выводом и сравните две, чтобы увидеть, что отличается.
Мы все еще тестируем это, но похоже, что вы можете переместить false / true из набора тегов в группу свойств для вашей версии сборки DEBUG, вы все равно можете установить для него значение true и MSBuild скомпилирует (при условии, что файл MSBuild TfsBuild.proj настроен для использования чего-то другого, кроме конфигурации отладки). Для этого вам нужно будет отредактировать файл csproj с помощью Блокнота.
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<MvcBuildViews>true</MvcBuildViews>
....
Вам необходимо переместить тег MVCBuildViews из группы свойств по умолчанию выше в группу свойств конфигурации отладки (ниже). Опять же, когда мы получим настройку TFS / MSBuild, я постараюсь опубликовать шаг, который мы добавили в наш файл TFSBuild.proj, в TFS.
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<MvcBuildViews>true</MvcBuildViews>
<DebugSymbols>true</DebugSymbols>
....
Эта проблема похожа на ту, о которой говорилось здесь: http://blogs.msdn.com/aaronhallberg/archive/2007/07/02/team-build-and-web-deployment-projects.aspx кажется, что при вызове aspnet_compiler.exe не удается найти двоичные файлы, потому что они не находятся в папке bin проекта MVC на машине сборки. Я еще не нашел решения.
Принятый ответ у меня не сработал. Параметр $ (PublishDir) указывает неверное расположение. Вместо этого мне пришлось использовать:
<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler Condition="'$(IsDesktopBuild)' != 'false'" VirtualPath="temp" PhysicalPath="$(ProjectDir)\..\$(ProjectName)" />
<AspNetCompiler Condition="'$(IsDesktopBuild)' == 'false'" VirtualPath="temp" PhysicalPath="$(OutDir)\_PublishedWebsites\$(ProjectName)" />
</Target>
На самом деле, есть лучшее решение этой проблемы. Я тестировал его с VS / TFS 2010, но он также должен работать с VS / TFS 2008.
<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>
Я собираюсь работать с командой MVC, чтобы обновить их шаблон проекта, чтобы использовать этот подход вместе с настраиваемой целью ( вместо переопределения AfterBuild).
Я опубликовал в блоге сообщение о том, как включить проверку просмотра во время компиляции для проектов ASP.NET MVC в TFS Build 2010 .