Держите визуальную студию от удаления всего, от bin/on rebuild?

У меня есть проект веб-приложения. У меня есть DLL, которые я ссылаюсь в проекте, хранящемся в моем bin/folder. Ну, всякий раз, когда я делаю пересоздание или очищение от Visual Studio, он удалит все в этой папке. Как я могу предотвратить это?

Ответ 1

Я буду избегать вопроса "почему" и просто указать, как это сделать. Отметьте файлы как только для чтения, и VS не должен их удалять.

Ответ 2

Не кладите ничего в корзину. bin - целевая папка для двоичных файлов - это не исходная папка для двоичных файлов.

Создайте себе папку lib или что-то в этом духе, чтобы вставить свои сторонние двоичные файлы. Вы даже можете назвать его "сторонними бинарниками", поскольку не все знают, что "lib" означает одно и то же. Сделайте ссылку на двоичные файлы в этой папке, и Visual Studio скопирует их в bin, когда это необходимо (в том числе при перестройке).

Ответ 3

Следуйте за Джоном Сандерсом и положите вашу .dll в отдельную папку. В моем случае я назвал эту папку "ServerAssemblies". Затем измените файл проекта (.csproj в моем случае) и добавьте цель "AfterRebuild".

<Target Name="AfterRebuild">
  <ItemGroup>
    <ExtraAssemblies Include="$(SolutionDir)ServerAssemblies\**\*.*"/>
  </ItemGroup>
  <Copy SourceFiles="@(ExtraAssemblies)" DestinationFolder="$(ProjectDir)bin\"></Copy>
</Target>

Ответ 4

Можете ли вы объяснить, почему вы должны сохранить его в папке bin для начала? Я всегда создаю отдельную папку, например /components, где я храню все ссылающиеся DLL.

Ответ 5

Одна вещь: "Не делай так!" люди забывают, это контроль источника и стороннее программное обеспечение. Используя SVN, вы часто получаете файлы, которые, если бы использовались физические ссылки, создавали бы несоответствия, если они не находятся в одном и том же физическом местоположении.

Одна CMS, с которой я сейчас работаю, предварительно создает проект VS и решение, когда вы настраиваете другой "экземпляр" этого. Он сбрасывает некоторые DLL файлы, которые ему нужны... но если вы их восстановите, они исчезнут.

Простым решением в обоих случаях является выполнение, как указано выше, и его выполнение.