Make changes to c# program without loosing older code - c#

I'm a hobbyist programmer and I've created an application for my office. Every so often I need to improve the code, add features or fix issues that come up under certain circumstances - I've found bugs or ineffective coding even after 3-4 months of heavy usage of the application. The thing is that whenever I modify the code, visual studio saves the changes. This means that if I want to use the program I'll have to be really fast in coding and debugging or it won't build - and I won't be able to use it...
Is there any way to keep the old version of the program without having to save the complete project folder elsewhere? Like creating a new version but keeping the option to go back to the old - working - one...

What you are looking for is called source control.
There are many systems out there, two popular ones are subversion and Git.
Used properly, you will have a full history of each file you have in your project.

There are two other answers here regarding source control at the time I write this, but there is another angle on this as well.
You're executing your production copy from the development directory. Don't do this.
When you have developed the program to a stable version, make a copy of it somewhere else and use that copy. In this way you're free to keep developing on the software without destroying your ability to keep using the existing stable version.
As for source control, you should definitely use that as well if you're not already doing it. It would, among other things, allow you to go back and hotfix the stable version with minor bugfixes while still doing major rewrites of the software, as well as the features others here have mentioned, full history of your project, "unlimited" undo, etc.

I'm not sure what you mean that Visual Studio saves the code when you modify it. It does by default save when you build, but I don't think it saves while you're typing.
Anyway, what you're looking for is called a source control system.

You can try Team Foundation Service from Microsoft.
It works fine and you can share youre project whit colleagues.
http://tfs.visualstudio.com/
EDIT:
This is a free of charge option you can use, until you want to share youre project with more than 4 persons!! than you have to pay for TFS

You need source control.
If your project is open source you can use codeplex, it's an open-source Website where engineers and computer scientists share projects and ideas. Its features include wiki pages, source control based on Mercurial, Team Foundation Server or Subversion (also powered by TFS), Git,discussion forums, issue tracking, project tagging, RSS support, statistics, and releases
If you don't want to share your code you can use Team Foundation Server

Related

Visual Studio Project Backup

Right now I am saving my all visual studio projects in C drive.
Now I want to keep copy of that all projects in some other drive, so if my C drive get crashed then also I can access all projects.
So what is best way for that.
If I just make zip of current projects from C drive and paste it in another drive.
And when needed I extract it, then will it work OR any error will come.
Thanks for help in Advance.
If I just make zip of current projects from C drive and paste it in another drive.
Well you could do that but it's rather tedius; error-prone and rather brute-force. It's difficult to maintain history.
A better choice is to use some form of source control (SC) / software configuration management (SCM). SC is a tool for maintaining a code repository. It works by associating metadata about every source file and any changes you make.
e.g.
Git
Subversion
Microsoft TFS
Perforce
IBM/Rational ClearCase
Microsoft SourceSafe (ewww, retried thankfully)
Source control not only keeps a copy somewhere else (ideally a different computer) but it also allows you to
keep track of what changed
rollback a change
share with your friends or colleges
integrates nicely with your IDE of choice (VS) or command-line
But in this day and age there are plenty of free cloud-based solutions that offer you more than just acting as a code repository such as stats; wikis; bug tracking; and spiffy charts. Check out:
Microsoft Visual Studio Team Services (VSTS)
Github
Atlassian Bitbucket
Summary
Irrespective of whether you perform manual folder copies or use source control; both will lead to a copy of your code. However only the latter introduces workflows and due-diligence (via SCM) so that as you code you are unlikely to lose information due to the procedures and safeguards in place.
A word on file backup
If for some absolute reason you decide not to proceed with SC but rather stick with plain-old-file-backup then at least follow the fine wisdom of Scott Hanselman (MSFT) where he talks about file backup best practices:
I've got a number of backups because I practice the Backup Rule of Three.
3 copies of anything you care about - Two isn't enough if it's important.
2 different formats - Example: Dropbox+DVDs or Hard Drive+Memory Stick or CD+Crash Plan, or more
1 off-site backup - If the house burns down, how will you get your memories back?
...using apps like CrashPlan.
Scott will most likely agree that his plan wasn't intended for source code but at least you have 3 backups of files as he recommends.
See Also
Hanselman, S, "Is your stuff backed up? Recovering from a hardware failure"
Have a look at Visual Studio Team Services. You can add code to source control (I would use Git if I were you) and manage your projects there for free.
Having your code in a source control system has many benefits, like having history of each commit.
Next to that, VSTS has lots of opions like Continuous Integration / Continuous Deployment, Testing, project management support like making your project an Agile project.
What will you do if hard drive crash?
Code Management is a practice and there are many tools to help you to manage your code. Try GitHub or bitbucket
Moreover you can also zip the code and save on external disks but check how much risk is involved with your code.
You could use a .zip archive to back up your work, but this is slightly laborious and will likely include a number of files you do not need to get up and running again (for example the build output, nuget packages folders, etc.) which will bloat your archives.
A better option would be to use a Version Control System of some kind, which will allow you to back up those parts of the project/solution that actually need to be backed up while ignoring the parts that can be rebuilt from the code. A good walk through of what and why can be found in Version Control By Example, which also includes comparisons about different types of VCS as well as how to perform many of the usual tasks.
There are various free options out there, based on a number of different providers. As some examples, I've used the following services, and all of them will give you a free account, and some will also give you private repositories (so that random members of the public can't see your work if that's what you want):
GitHub - unlimited public repositories, uses Git.
BitBucket - unlimited private repositories, uses Git or Mercurial
Visual Studio Team Services - unlimited private repositories, uses Git or TFS
Using an online provider will give you the added benefit of the backups being on a third party - so if your disk fails you'll still have a backup, as well as the other benefits a VCS will provide (the ability to rollback to a specific point in time, annotations about changes, etc.).

how to manage Project in c# , ASP.NET MVC when i have a new copies and have something feature in it?

i have a project where i do something i have same copy from another who have do something in it later i have a thing to do currently.
so that's three copy and i am unsure that i am not confused with it. sometime i call wrong copy for finding the thing i want from them.
without using any software outside our office window any trick to manage all project or how i can manage them and make them one copy.
the same problem with some other problem come with when the same script used in two software , website who are used same script with have a small difference in both.
so i want to know how exactly all other manage them. i want to have a answer with .net plateform.
There are several source control solutions that have plugins to integrate directly with Visual Studio. I would recommend looking into Subversion. Currently at my office we use Vault, but it has some short comings, especially when it comes to renaming or moving a file and then editing it prior to a check in.
http://ankhsvn.open.collab.net/
http://www.sourcegear.com/vault/
I recently started a small pet project. It's written in C# with ASP.NET MVC3. As it's grown, my needs for source control also has grown. Here's what I've done:
Day one, I placed my project in a Dropbox folder. That way, I could reach my project files from all my computers (and even my iPhone).
A few weeks later, when I first had to make some serious changes and neede a fallback, I created a Mercurial repository in my Dropbox folder and commited all my code. I've got a blogpost on that here: http://csharptutorial.blogspot.com/2011/06/using-dropbox-with-mercurial.html. Mercurial is a great versioning system, because it doesn't require a server installation and your repository is copied in full to all locations where it's checked out.
Now, I'm looking at moving my project over to BitBucket (http://bitbucket.org/) where you also share and discuss code with others.
A good alternative to Mercurial is Git, using github.com in stead of bitbucket.org. Both have a learning curve, but they both represent modern version control tools and is well worth having a look at.
Source control and discipline.
You need to get an approach and method for managing your source. A source control system is essential for this. I use SVN and Ankh, as does Clayton.
However, you need an approach for using this. I always have branches. You can have development branches and merge these changes into a release branch when your code has passed all the tests. This way takes a discipline and time, but you need to do this to build quality into your system.

Ultra-Simple LightWeight Source Control for Visual Studio Projects?

I am using tortoise SVN with Ankh. I really have spent too much time tweaking and cleaning mess from time to time and I lost hope in educating each every developer on how to use things properly. I am sorry but I am fed up and tired restoring the repository/reverting/fixing merges manually, sometimes even having to write some code again.
So here's my question : Is there a chimpanzee-friendly solution for source control privileging Simplicity over Flexibility ? Projects and teams are small and I figured out that we just need VERY simple and basic chekout/checkin mechanisms, with no flourish, and limited functionality and features. That would help me stop being paranoid about projects integrity.
I know that there is no easy way to do this and there is minimum techinicity and discipline required, but I ended up wondering if we Really needed all that in our case, as in the long run, it causes more trouble than it helps.
Your problem sounds like it has more to do with process and branching strategies than anything else.
If your developers know to always get the latest code before checking in and resolving conflicts locally, running all tests etc, you will already have a leg up.
Educate your developers instead of trying to use a dumbed down SCM (that in the future will probably not be adequate to your needs).
As for branching strategy - I had found that branch per feature is the most natural way to work and mostly avoids merge conflicts.
Changing SCMs will not help with your issues if you don't tackle process and branching.
First, I would suggest that you force developers to clean up their own messes, not do it for them. By doing it for them, you are only encouraging them to stay ignorant. By all mean, be a resource and provide help for them, but make them do it themselves. They will quickly learn what they have to.
Second, there are few options that have the kind of integration with VS that most developers would like. SVN is one of them. Team System is another (but a much more expensive and complciated solution). Visual Source Safe is also an option, but it's really an old, out of date system that hasn't been updated since 2005 (and even that, that was largely a patch job to a system that hadn't been updated in 7 years before it).
If you want free, there is nothing worth using that is simpler than Subversion. Everything else will be ancient technology (like CVS) that will have even more problems. There are several free SCM's that are more powerful, like git and Mercurial, but you would have even more problems. If you're willing to pay, then many third party tools have better merge and visualization tools. One I like is AccuRev.
There are also some better commercial SVN plug-ins for visual studio that may help as well. I've not used any of them, but they may improve the developers use of SVN.
Try the combination of Mercurial and Tortoisehg as GUI.
You can also use it from Visual Studio with VisualHG.
Every developer is free to clone and manage her own repository.
Once you reach an agreement you can push up to a colleague's repository or a central location.
To aid with adoption, you might convince others to watch the DVCS video on the FogCreek Kiln page.
See what-makes-merging-in-dvcs-easy and similar SO discussions regarding the relative ease of merging.
I would say that every developer that works in a team should have a strong understanding of source control principles. Maybe you should get better developers! :-)
To answer your question I have always found Team System wonderful and very flexible. With such good IDE integration, it can be configured to ensure best practice in source control. However, it is quite a big source control system so may be over the top for your purposes.
I believe the issues is more of process than product.
Strict written documentation and process might work
Keep it as simple as possible.
You might make adherence to the process a contractual obligation.
That said I have had very good luck with Visual SVN for Visual Studio.
It is easy to use and integrates well.
If that is too hard, might revert to TortoiseSVN which is pretty idiot proof.
As for an alternate super simple product I know not of such a product, but
if you really need something lightweight, then datestamped and named zip
files is a the poor and ignorants form of source control. Merging and
restoring is a bitch though.

How do small programming teams work in C# .NET? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
Improve this question
What tools/plugins do you use for checking in/out code?
how to communicate changes made to the code, how to make request for new functionality?
How has your team solved this?
See this previously asked question:
Multiple Programmers in Software Development. How do we work on the same code and ensure it is always updated?
There are a lot of good answers to this question, and they apply to small and large teams.
For source control, we use Svn with the Tortoise SVN client. We've used other source control systems in the past, and have found this one to be the best for our needs.
I would recommend you use SVN for source code management, if you are using visual studio you can get numerous plugins for IDE integration.
http://subversion.tigris.org/
http://www.visualsvn.com/ = SVN Server & VS Integration
Try to set up Continuous Integration for this you can use Cruise Control .Net or Hudson. Cruise control can be set up to do a build on each check in and the history is shown on a web page.
http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET
http://hudson-ci.org/
For requesting new functionality you could use a ticketsing system, wiki or Google Wave any one of these should enable you to keep track of requirements.
Hope this helps.
You can pretty much use any tools for small development teams you wish. There are lots of options.
Personally, my team uses SVN for code, and Trac for tracking - mostly because it's very cost effective for a small team. However, there's nothing C#/.NET specific about that setup.
If your team has MSDN subscriptions, you might want to consider Team Foundation Server. It has many features for integration with Visual Studio that are (arguably) superior to some of the alternatives.
You should use one of the many available source control repositories. Trust me, you won't know what you did without it :)
There are plugins for Visual Studio for working on a team, but personally I've never used them.
I've done team projects with both Subversion and Mercurial... just make sure to check in the solution and project files, and all related code.
Everyone will also need to be running the same version of Visual Studio.
For requesting new functionality, you might want to consider an external solution like Trac or Bitbucket or some other free system that includes issue tracking.
Well, how small? I work on a team of 5, and we communicate well with IM, or just dropping by and talking. That being said, the team is pretty responsible, so you can trust everyone to carry their weight. I would suggest you use subversion for source control if your company doesn't have anything.
We're a team of 3 C# developers.
For version control, we use AnkhSVN, an open source SVN client that integrates with Visual Studio.
For project management, issue tracking and feature requests, we use Redmine.
What tools/plugins do you use for checking in/out code?
Mercurial -- once you've used a DVCS, it's hard to imagine going back. Everybody uses their own favorite editor; usually, that's Emacs, which comes with support for many VCSs, including Mercurial.
how to communicate changes made to the code, how to make request for new functionality?
Changes are tracked in version control. You can look at the changesets as you pull them, or browse the web interface. Or just ask people at lunch what you're working on -- no developer is an island. New functionality is tracked, along with bugs, in the bug tracker.
How has your team solved this?
We're a small team using C#, but nothing here is specific to C# or small teams. I've used very similar systems with other size teams, and other languages/platforms.
We have a team of three and currently use Source Gear Vault for source control and Fogbugz for bug/feature tracking. Source Gear integrates into Visual Studio nicely and works over http which makes it easy to access from anywhere. Check ins and outs can be done directly in Visual Studio or a standalone client.
Source Gear also integrates with Fogbugz.
Used to use Visual Source safe and would never go back...
I work on a small team of 1-5, depending on the project.
What tools/plugins do you use for checking in/out code?
We use Git with Github for new projects, and TFS for some legacy work.
I see a lot of people recommending a certain provider without telling you why. I have used TFS, SourceGear, SVN (a little), and Git. I prefer Git because it stays out of my way. Git is command-line based. My typical source control workflow is a handful of simple commands, but learning those commands took a few tries.
how to communicate changes made to the code, how to make request for new functionality?
We use Pivotal Tracker for story writing and organizing priority.

manage different verions of a Visual Studio project?

I'm working on the upgrade of my c# visual express 2008 project to a newer version.
How do I manage this without having to copy the whole project directory and work into the copied directory project?
Create a new branch in the source control system that you are using. You can read more about it at Branching and Merging Primer.
If you are not using a source control I suggest you start with subversion. VisualSVN SERVER is an easy way to get started. You can use TortoiseSVN to work with it or visual studio plugins such as ankhsvn or VisualSVN.
You do not really have to install svn server. You can create repository with Tortoise Svn too and use file protocol to connect to it. This means that you can put the repository on your flash drive and query it with you so that you can work from any computer.
Subversion is good, and easy to pick up, but you might also want to consider Mercurial or Git. These are almost as easy to pick up and give you some flexibility in that they are distributed - which I have found makes much more sense for an individual user. These also tend to take up less space in the long run as well.
In addition, for your needs, you will not necessarily need to branch. Get your chosen Source Control installed, and create your repository with your stable version in it. Once you have that, as long as you have a backup in place, you will always be able to get back to your stable version. If you ever have to do a bug fix on your stable version, that would be the time to branch from that version. For a small individual repository, it'll probably be less confusing to keep your main work in the trunk -
Lastly, since you are new to source control, get in the habit of doing one thing at a time, then checking that change in. Your source control tool (or commandline) should be open every time your IDE is, and you should use it often. Even small changes are important to track. Establishing this habit will take work, but will pay off immensely.
Good luck!

Categories

Resources