Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I prevent Visual Studio 2005's "Clean" command from removing 3rd party binaries?

I have a Sitecore/ASP.NET projects that I'm developing. Today at some point I inadvertently hit the "Clean" option in the solution context menu. It took me a while to figure out why my site was hopelessly broken. Turns out Visual Studio went ahead and deleted several required assemblies from the \bin dir which are not part of my project.

How can I prevent this from happening again?

The odd thing is that it did NOT delete everything... just a small handful. It left many that are not directly referenced by my project. This makes me wonder exactly what this feature is supposed to do? Is there some sort of file flag I can set? None of the files are set to read-only. If you're interested in details, the following got deleted:

Sitecore.Analytics.dll
Sitecore.Client.XML
Stimulsoft.Base.dll
Stimulsoft.Report.dll
Stimulsoft.Report.Web.dll
Stimulsoft.Report.WebDesign.dll
Telerik.Web.UI.dll

UPDATE: You know what... I guess what I'm really more interested in here is WHY Visual Studio is leaving most of the files and only deleting these specific ones.

like image 379
Bryan Avatar asked Feb 23 '10 02:02

Bryan


1 Answers

The correct answer to your problem will depend on how you are referencing the assemblies and how you include them in your project output.

The bin and obj folders generated by a project are best considered "output" folders; these folders should only contain files produced by the project build.

When you perform a clean or rebuild of a project, all intermediary and compiled files are deleted from these folders.

You should be comfortable this is happening.

You should be able to restore these folders by running the build process at any time. If you have added files to these folders directly, it breaks the purpose of these folders and means you ought to rethink how you're adding those files.

The preferred way to reference compiled assemblies is to add them somewhere inside your source folders. From there, they can be added to a source control system as easily as any other file and can be referenced/copied by projects which depend on them. In my work, we have a "Libraries" folder which contains numerous third-party assemblies referenced by multiple projects in our solution hierarchy.

Try using a source tree like this and seeing if it works for you:

  • /Projects/My Solution/
  • /Projects/My Solution/Libraries/
  • /Projects/My Solution/Project A/
  • /Projects/My Solution/Project B/
like image 162
Paul Turner Avatar answered Oct 02 '22 19:10

Paul Turner