MSBuild: Создание веб-сайтов asp.net 4.0: файлы .metaproj

У меня есть файл решения с веб-сайтами ASP.NET.

Когда я создаю решение с помощью .NET 4.0 Beta 2, используя

"c:\WINDOWS\Microsoft.NET\Framework\v4.0.21006\MSBuild.exe" d:\MyPath\MySolution.sln

Все работает нормально, ошибок нет. Затем я пытаюсь создать то же решение с помощью задачи CruiseControl .NET (скрипт msbuild, запущенный службой), то же самое решение не работает с:

D:\MyPath\MyWebSite.metaproj (,): errorMSB4025: Не удалось загрузить файл проекта. Не удалось найти файл «D:\MyPath\MyWebSite.metaproj».

Конечно, такого файла нет. Я предполагаю, что *.metaproj - это .csproj-подобный файл msbuild, созданный динамически для веб-сайтов...

Но я не знаю, как исправить ошибку... Я пытался погуглить метапродж-файлы, но безуспешно. Я пытался создать файл вручную, я вставил ‹Project› с ‹Task Name="Rebuild"›, и компиляция не вызвала никаких ошибок, но я предполагаю, что сайт не скомпилировался.

На одной и той же машине есть проекты .NET 3.5 и .NET 4.0 и переменные среды для обеих платформ.


person Tuomas Hietanen    schedule 26.10.2009    source источник


Ответы (6)


Есть способ обойти это, если вы можете избавиться от зависимостей проекта в файле решения. Вы можете сохранить зависимости проекта в файле проекта, но удалить их из файла решения. См. эту ссылку для этого
Ответить.

person Russ Kahler    schedule 28.10.2009
comment
Веб-сайты не имеют файла проекта. Ссылки хранятся в файле web.config (если это веб-приложение). В настоящее время я использую сайты без web.configs. Я попытаюсь преобразовать эти ссылки на проекты в двоичные ссылки, но существует около 40 веб-сайтов, поэтому у меня пока нет времени это тестировать. - person Tuomas Hietanen; 23.11.2009

У меня такая же проблема с сервером сборки tfs 2008. Как только я переключил конфигурацию сервера tfs builder на использование msbuild 4.0, у меня возникла та же проблема. Если я запускаю msbuild вручную, все в порядке, и в журнале говорится, что он создает файл metaproj, но в процессе автоматической сборки он терпит неудачу.

Расс

person Russ Kahler    schedule 26.10.2009

Я прочитал обсуждения CruiseControl и попытался запустить те же команды, что и CruiseControl.net, и я решил свой случай, так что я переместил свой

Пробелы в именах каталогов приводят к сбою msbuild в Cruise Control !! ??

Поэтому я даю явно каталоги для Круиз-контроля без пробелов. Пример ниже.

<Project name="ProjectNameHere"> <workingDirectory>c:\dev\work\ProjectNameHere\WorkDir</workingDirectory> <artifactDirectory>c:\dev\work\ProjectNameHere\Artifacts</artifactDirectory> ...

person Eino Mäkitalo    schedule 24.01.2010
comment
Хм... Возможно, сетевой диск Map \\localhost\c$\... поможет. В любом случае, извините, у меня было много других дел, поэтому у меня не было времени протестировать все возможные решения... Я надеюсь, что .NET 4.0 RC или финальная версия исправят это. - person Tuomas Hietanen; 02.02.2010

В последнем выпуске Visual Studio 2010 эта ошибка исправлена.

person Tuomas Hietanen    schedule 26.04.2010
comment
К сожалению, теперь я снова получаю это с 2010/v4.0. - person jcolebrand; 12.03.2012

Сначала я создал my_website.metaproj рядом с my_solution.sln, который выглядел так:

<Project DefaultTargets="Test" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <Target Name="Build">
    <Message Text="Building...but nothing to build" />
  </Target>

  <Target Name="Test">
    <Message Text="Testing...but nothing to test." />
  </Target>

  <Target Name="Clean">
    <Message Text="Cleaning...but nothing to clean." />
  </Target>

</Project>

Затем он пожаловался, что не находит sgen.exe. Я установил Visual Studio 2010 Beta 2 на агент сборки, и похоже, что теперь он работает.

[Изменить] На самом деле это не совсем сработало. Он не загружал зависимости проекта веб-сайта в его каталог bin.

В итоге мы удалили процесс сборки обновления и переделали процесс сборки, используя вариант стандартного шаблона. Это сработало.

person Mark    schedule 27.10.2009
comment
Хм.. Как я уже описал, я также добавил Rebuild-задачу. Но это не помогло: на самом деле я использую свойство TargetPath (в .sln-файле) для публикации релизной версии веб-сайта. С этой нулевой задачей он не создал веб-сайт. Кроме того, я использую CC.NET, а не TFS, поэтому стандартного шаблона нет. - person Tuomas Hietanen; 28.10.2009

В VS2013 у меня сработало переключение с DefaultTemplate на TfvcTemplate.12!

Некоторая информация о TfvcTemplate.12 здесь http://blog.qetza.net/en/2013/10/03/new-features-in-team-build-2013/

person learnerplates    schedule 12.03.2015