Разница в том, как Visual Studio и MSBuild относятся к OutputPath проектов веб-приложений - PullRequest
1 голос
/ 21 февраля 2011

Я использую проект веб-приложения VS 2010.Я хочу изменить стандартное свойство OutputPath веб-приложения на каталог в другом месте.Кажется, это не совсем работает, когда у меня есть другой проект в решении:

FIRST:

  • Создайте пустой проект веб-приложения, WebApplication1
  • Измените OutputPath в свойствах проекта с bin на c:\binaries
  • Щелкните правой кнопкой мыши проект в обозревателе решений и выполните сборку.

Всеработает как положено, и WebApplication1.dll копируется в c:\binaries.

THEN:

  • Добавить библиотеку классов в то же решение, ClassLibrary1
  • Добавить библиотеку классов в качестве ссылки на проект веб-приложения.
  • Щелкните правой кнопкой мыши проект веб-приложения в обозревателе решений и выполните сборку.

И ClassLibrary1.dll, и WebApplication1.dll скопированы в c:\binaries, , но теперь существует каталог WebApplication1\Bin, который содержит только ClassLibarary1.dll

ВОПРОС:

Кто-нибудь сталкивался с этим раньше?Единственная ссылка в Интернете, которую я нашел, была это , без ответа.Цените любой способ отключить создание папки Bin.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ

  • Это происходит только при сборке из Visual Studio.Если я использую msbuild WebApplication1.csproj, этот загадочный каталог Bin не будет создан.

  • Я копался в журналах msbuild, но безрезультатно.Я не мог найти собственности, относящейся к этому пути.Заглавная буква B для Bin также странная, все пути при использовании в msbuild обычно bin.

  • Последнее, что я удалил файл WebApplication.targets Импорт из веб-приложенияProj файл, но это не имеет значения.Фактически, глядя на журналы msbuild, похоже, что нет никаких целей из выполняемых целей WebApplication.targets.

1 Ответ

1 голос
/ 21 февраля 2011

Ваше веб-приложение имеет выходной путь по умолчанию, такой же, как каталог проекта webapplication1. Каталог Bin используется вашим сайтом для определения местоположения зависимых сборок (см. probing ). По умолчанию Microsoft.Web.Publishing.targets использует его для локального копирования всех зависимых сборок.

Полный вывод веб-приложения - это сайт с * .aspx, .js, web.config, bin \ .dll-файлами и так далее. Чтобы скопировать его в каталог c: \ binaries , укажите OutDir . Но в результате вы получите полный сайт по пути c: \ binaries \ _PublishedWebsites \ WebApplication1 . И подпапка _PublishedWebsites не может быть переименована.

Кажется, это поведение по умолчанию очень строгое. Внутренние объекты целей сборки можно посмотреть по адресу C: \ Program Files \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications \ Microsoft.WebApplication.targets .

EDIT : Если вы действительно не хотите видеть каталог bin, просто проигнорируйте его в svn / git / ....

...