как обновить ссылки в приложениях ASP.NET без Visual Studio?
-
22-08-2019 - |
Вопрос
У меня есть приложение ASP.NET, которое использует внешнюю сборку, которой нет в GAC.В приложении есть файл .refresh, который копирует сборку в каталог bin при компиляции приложения.
Когда я устанавливаю приложение на производственный сервер (путем копирования файлов приложения в виртуальный каталог), каталог bin не обновляется автоматически при наличии файла .refresh, как я думал.Я попробовал использовать инструмент aspnet_compiler, но это не сработало, поскольку он ожидает, что сборки уже находятся в каталоге bin.
Как мне заставить .NET обновлять каталог bin приложения без Visual Studio?
Решение
Файлы .refresh существуют только для того, чтобы VS знал, что ему следует отслеживать оригиналы, и если они изменились, скопировать новую версию в папку /bin.Это просто текстовые файлы с путем к оригиналу — для сравнения используется дата изменения.
Когда ты говоришь:
Когда я устанавливаю приложение на производственный сервер (путем копирования файлов приложения в виртуальный каталог), каталог bin не обновляется автоматически.
Что именно ты имеешь ввиду?Разве вы также не копируете содержимое каталога bin на рабочий сервер?Вам потребуется развернуть все зависимые сборки вместе с приложением.
Другие советы
Очистка каталога кеша asp.net может помочь:
C:\WINDOWS\Microsoft.NET\Framework\
FRAMEWORK_VERSION\Temporary ASP.NET Files\YOUR_APP_NAME
Удалите эти файлы .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.