Представления ASP.NET MVC 1.0 AfterBuilding перестали работать на Сборке TFS

Это ожидаемое поведение в 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'});
62
задан o_o 16 April 2009 в 11:07
поделиться

7 ответов

Проблема возникает из-за того, что задача 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.

17
ответ дан 24 November 2019 в 16:33
поделиться

Невозможно предварительно создать приложение ASP.NET MVC.

-6
ответ дан 24 November 2019 в 16:33
поделиться

Я полагаю, вы имели в виду, что вы изменили следующие настройки в файле .csproj:

<MvcBuildViews>true</MvcBuildViews>

Настройки, которые вы опубликовали в своем файле. вопрос не должен касаться Если он работает на вашем локальном компьютере, то, очевидно, вы можете предварительно собрать приложение ASP.NET MVC.

Я думаю, вам нужно отследить, что отличается между вашей средой сборки TFS и вашими локальными машинами VS. Может быть, он использует другую версию MsBuild или что-то в этом роде.

Попробуйте выполнить обе сборки с подробным выводом и сравните две, чтобы увидеть, что отличается.

1
ответ дан 24 November 2019 в 16:33
поделиться

Мы все еще тестируем это, но похоже, что вы можете переместить 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>
    ....
0
ответ дан 24 November 2019 в 16:33
поделиться

Эта проблема похожа на ту, о которой говорилось здесь: http://blogs.msdn.com/aaronhallberg/archive/2007/07/02/team-build-and-web-deployment-projects.aspx кажется, что при вызове aspnet_compiler.exe не удается найти двоичные файлы, потому что они не находятся в папке bin проекта MVC на машине сборки. Я еще не нашел решения.

0
ответ дан 24 November 2019 в 16:33
поделиться

Принятый ответ у меня не сработал. Параметр $ (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>
0
ответ дан 24 November 2019 в 16:33
поделиться

На самом деле, есть лучшее решение этой проблемы. Я тестировал его с 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 .

180
ответ дан 24 November 2019 в 16:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: