Как вы обновляете ссылки в приложениях ASP.NET без Visual Studio?

У меня есть приложение ASP.NET, которое опирается на внешнюю сборку, которой нет в GAC. В приложении есть файл.refresh, который копирует сборку в каталог bin при компиляции приложения.

Когда я устанавливаю приложение на рабочий сервер (копируя файлы приложения в виртуальный каталог), каталог bin не обновляется автоматически при наличии файла.refresh, как я думал. Я попытался использовать инструмент aspnet_compiler, но он не работает, так как он ожидает, что сборки уже находятся в каталоге bin.

Как получить.NET для обновления каталога bin приложения без визуальной студии?

3 ответа

Решение

Файлы.refresh просто существуют, чтобы VS знал, что он должен отслеживать оригиналы, и, если они изменились, скопируйте новую версию в папку /bin. Это просто текстовые файлы с путем к оригиналу - для сравнения используется измененная дата.

Когда ты сказал:

Когда я устанавливаю приложение на рабочий сервер (копируя файлы приложения в виртуальный каталог), каталог bin автоматически не обновляется.

Что именно ты имеешь ввиду? Вы также не копируете содержимое каталога bin на рабочий сервер? Вам нужно будет развернуть любые зависимые сборки с приложением.

Удалите эти файлы.refresh.

Создайте простой скрипт сборки (используя все, что вам нужно, cmd, NAnt, Rake, psake ...), который:

  • копирует эти файлы в папку приложения asp.net
  • построить приложение asp.net.

Или вы можете отредактировать ваш файл.csproj и добавить что-то вроде:

<ProjectExtensions>
  <PropertyGroup>
    <PreBuildEvent>copy c:\path\to\dll\files $(ProjectDir)$(OutDir)</PreBuildEvent>
  </PropertyGroup>
</ProjectExtensions>

Это добавит действие предварительной сборки, которое скопирует ваши dll-файлы в выходной каталог вашего приложения asp.net. Вам придется построить его с помощью MsBuild

Очистка каталога кэша asp.net может помочь:

C:\WINDOWS\Microsoft.NET\Framework\
FRAMEWORK_VERSION\Temporary ASP.NET Files\YOUR_APP_NAME
Другие вопросы по тегам