Если Вы не хотите дубликаты в Collection
, необходимо рассмотреть, почему Вы используете Collection
, который позволяет дубликаты. Самый легкий способ удалить повторенные элементы состоит в том, чтобы добавить содержание к Set
(который не позволит дубликаты), и затем добавьте Set
назад к ArrayList
:
Set<String> set = new HashSet<>(yourList);
yourList.clear();
yourList.addAll(set);
, Конечно, это уничтожает упорядочивание элементов в ArrayList
.
Проблема в том, что в web.config кто-то добавил:
hostingEnvironment shadowCopyBinAssemblies="false"
После того, как это закомментировали, все начало строиться нормально. Какой кошмар !!
В Visual Studio была определенная ошибка. 2008, который был исправлен в SP1, что может быть вашей проблемой. Это происходит, когда вы ссылаетесь на встроенный файл JavaScript, и вызывает проблему, которую вы видите. Подробнее см. здесь .
Блокировки файлов - это всего лишь часть работы с Visual Studio. Нет никаких отличных способов обойти эту проблему.
Вы можете скачать отличную программу SysInternals Handle . Это расскажет вам, какие процессы блокируют соответствующие файлы.
Если это внешняя программа (например, антивирусный сканер / индексатор), это должно помочь. Если он просто укажет Visual Studio (devenv.exe) как виновник, то от этого будет меньше пользы!
Я предполагаю, что вы уже знаете, что VS2008 блокирует файлы. Вы можете попробовать запустить MSBuild из командной строки и посмотреть, исчезнут ли проблемы. К сожалению, Visual Studio может блокировать файлы, когда этого не следует делать, в некоторых труднопредсказуемых сценариях.
Используйте ProcessExplorer , чтобы узнать, какой процесс открыл файл , и перейти оттуда.
Если процесс в настоящее время использует эту DLL, его нельзя удалить и переписать. Вам придется убить или иным образом остановить процесс, использующий эти библиотеки DLL во время компиляции.
Hi I'm facing the same issue for a little while. It's very annoying.
I have an easier yet not so efficient solution for the problem. Cleaning the project or solution solves the problem.
У меня сработало следующее событие перед сборкой:
if exist "$(TargetPath).locked.bak" del "$(TargetPath).locked.bak"
if exist "$(TargetPath).bak" del "$(TargetPath).bak"
if exist "$(TargetPath).locked" ren "$(TargetPath).locked" "$(TargetFileName).locked.bak"
if exist "$(TargetPath)" ren "$(TargetPath)" "$(TargetFileName).bak"
В моем случае я заметил, что 2 файла создаются и не могут быть удалены. Однако вы можете переименовать их (и они все еще будут использоваться, если вы попытаетесь их удалить).В следующей сборке переименованные файлы больше не используются (блокировка снята), и их можно удалить, что и делает приведенный выше сценарий, после чего он может безопасно переименовывать новые заблокированные файлы, чтобы не было проблем с созданием сборка вывода.
Другие события перед сборкой, опубликованные здесь и в других местах, мне не очень помогли (они работали только для одной дополнительной сборки или только для нескольких, прежде чем проблема возникла снова). Итак, теперь я использую тот, который опубликован выше, для целей отладки.
Я бился над этим вопросом ГОДАМИ!
Пробовали ли вы добавить это в событие PREBUILD?
if exist "$(TargetPath).locked" del "$(TargetPath).locked"
if exist "$(TargetPath)" if not exist "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath).locked"
Смотрите здесь для получения дополнительной информации: http://nayyeri.net/file-lock-issue-in-visual-studio-when-building-a-project
Вот еще одна тема, где можно попробовать...
У меня была похожая проблема. Решением для меня было посмотреть на файл *.csproj и под ним я нашел недостающий файл, а ниже был правильный файл, так что я просто удалил строки и все сразу заработало