How to merge several Visual Studio projects in 1 Launcher project - c#

So i made 6 different little applications each in its own Project.
And my idea is now to build some kind of Launcher with 6 buttons each of them launching their respectives applications.
I know how to /Add/Existing Projects/Select Project, but my worry is more upon managing to run those application on a Button_Click.
I'm thinking about copy/paste-ing my .cs files of each apps, and their resources.
Should I ? Shouldn't I ?
What would be the best thing to do ?
EDIT1
Well, as i said, my apps are very small, i mean like very very small. It's mostly about automating templates mails sendings and opening/closing reports.
All my apps are in a single form each and they only refer to .png or .txt to store datas or dress up fancy-ish reports with images.
Right now, I'm in the process of importing FormX.cs one by one, as NonStatic said, re-referencing the UI and renaming some functions. I did 2 so far, and i'm hitting a generic file path issue.
I'm not sure how ressources are working once the .exe is built. Are they "embed" whereever the ressources file is located ? (Resources folder, or ..\bin\debug) or should i be carefull with this and systematicly put tehm in some specific folder ?
Also, thanks for your point Zdravko Danev, i was about to just copy/paste everything. You made me think slower about this. But i'm kind of searching for a real merged solution, "fusioned solution" if i may say. I don't want buttons to just run .EXEs. :p
EDIT2
I managed to copy/paste all my forms, was kinda easy, though time consumming to check every references.
But it's done.

Most definitely do not copy the code!
It is relatively easy to create a simple launcher. Take a look at Process.Start:
https://msdn.microsoft.com/en-us/library/system.diagnostics.process.start.aspx

I think your question is not about merge projects but how to launch them in a uniformed application or launcher.
You could copy files together, rebuild user interface. In the user interface, calling methods in the copied files. Then you could public a single EXE file other than multiple files.
If your original projects generate dll files, you could build a new app which reference those dll files. Loading them when you need it and invoke methods from there.
If your original projects generate exe files, then #Zdravko's solution, using Process.Start() to launch those exe files with correct parameters.

Related

c# How do I correctly compile code for distribution?

I want to convert my program into something that I can give out and people can use (just to my friends and people I know) but I'm totally lost as of how to do it. I've tried doing lots of things from other forums but none seem to work or actually do what I'm looking for.
I tried using the publishing feature in the build tab but don't like that It makes It into a ClickOnce application as I'd much rather have it as an .exe.
From what I read there is already one of these in the bin\debug folder (I'd use the use the release bin\ folder when I am fully finished) but i don't know how much or what files actually need to be packaged together for it to work on another computer.
My main questions are:
Can I actually make a distributable a application using the bin\debug .exe with all the other files in it?
Do I also need to include the obj and properties folder? (I'm guessing not for the properties but the obj does look kind of important)
Because I've used NuGet packages and references do i have to to include the App.config and packages.config or is this just something that visual studio uses?
sorry if I've got anything wrong with what I've said, I'm way out of my comfort zone here.
For a console application, you should be able to zip up the contents of the bin/release directory and distribute it directly.
You can safely exclude .pdb files from your archive, though they can help you debug the program if your friends and cohorts encounter errors.

How do you "Build" an exe that includes all the resource files like pics? Can exe be put on a web page?

I have students in high school who have created some programs using Visual Studio C#. They created some games and would like to now upload them to the web. I am pretty new to Visual Studio C#. I thought after a program was "built" that you could go into the bin/debug folder and get the exe file for the program and be able to play the game without having to have Visual Studio on the actual computer you are playing it on. It works with some of their games but some of them, there are graphical files that are missing in the exe file if all the other files aren't stored in the same place. How can I get a clean exe of their game? Can that exe be loaded up onto a web server so they can play it from there or at least download it from there?
Microsoft wrote a guide on how to do exactly this. It's on their MSDN website, which is sort of like the developer back-bone for a lot of Microsoft software and documentation.
Old guide: Adding and Editing Resources (Visual C#)
Newer guide: How to: Add or Remove Resources
The gist is that the program needs to know where the files are, relative to the location of the compiled binary (in this case, an .EXE); There's several different ways to do this, depending on your level of expertise. I would suggest that you take a look at the guides above to start that journey.
there's a few ways of doing this. (Also, make sure you're creating a 'release' build when you compile).
You can include resources in your game by creating a resources file. This is something I usually do only on winforms applications etc.
If you have on-disk files you need to distribute those on-disk files along side your game. You could do this by zipping up your game.exe and the /files/images.img folder (or what ever your resources content folder is named).
If you're feeling adventurous you could create a 'deployment project' which is a project that allows you to create an installer file. This is a bit more work however you will have fine grained control over what files go where etc.
Good luck!
EXE files generally aren't self contained for video games with many resources, just add resources in an external folder and make sure the paths to the resources in their games are not absolute but relative in the local directory.
So for example:
get rid of paths like C:/Users/Bob/Desktop/Game/Images/player.png and replace with /Images/Player.png.
Also, an EXE generally doesn't run client side on webpages, it is possible but difficult. Things such as Flash are made for this sort of issue. I'd say make the webpage a place where they can download their games. Github has a nice way to do free websites called gh-pages. OFC, you could host one yourself but that would require a lot of setup work.
Like Monza said, you can zip up the files for download. Or, you could create an installer if you wanted to be really ambitious.
I thought after a program was "built" that you could go into the bin/debug folder and get the exe file for the program and be able to play the game without having to have Visual Studio on the actual computer you are playing it on.
That is correct, given that the other machine has the necessary .NET framework version installed AND any other resources like .dll files and config files are also present. When the application is ready for release, you can set the Build options in the project properties to Release, and then when you build all the files needed for distribution will be in the bin\Release folder.
It works with some of their games but some of them, there are graphical files that are missing in the exe file if all the other files aren't stored in the same place.
This may depend on how the application was written. If resources like pictures are embedded in the assembly then those files will not be needed to run on another machine. If the application is using hard coded paths for the image resources in the source code, then the application will likely break if the necessary files aren't present when the .exe is executed.
Can that exe be loaded up onto a web server so they can play it from there or at least download it from there?
Yes - you could upload the .exe to a file server to make available for a download, but you would not be able to run it within a browser over the web. I would recommend zipping up the .exe and other files needed and hosting the .zip file on the web server for download; browsers may give a warning or block downloading an .exe .
Hope this explains it a little bit for you.

Can I compile a single aspx.cs file into a DLL?

I'm attempting to make a single small update to a website written in C#/ASP.NET.
All I'm trying to do is change the email address a form submits to, which is why I'm not seeking out a proper C#/ASP.NET developer.
I've done a little research, and it seems that the site itself is using dll files in the /bin folder to run the forms and things. The form is contact.aspx.f3293f9sd.dll, so I've edited the corresponding contact.aspx.cs file.
What do I do now?
Can I build this single CS file into a single DLL and upload it? I've scoured the menus and see no such option, and Google results seems to imply that you need to add entire projects and build entire projects at once.
Is that correct? What's the process here?
What you need to do is open the solution file. Solution files are files composed of projects. The contact.aspx.cs file is part of one of those projects. You need to make your change in the file, then recompile your solution. Then you can upload the DLL file it outputs to your production. Make sure you compile in Release mode.

Copying and renaming resource files with script

I'm currently working on a project with multiple language options. I have loads of resource files with my first language and want to copy these files and add some text to them using some sort of batch script in visual studio.
From within VS it will be hard to achieve. There are many standalone tools to edit .resx files separately (like http://resx.sourceforge.net or http://resxmanager.com). Great help when translation gthe files, but I do not know any capable of scripting/batching the job.
RESX are simple XML files, so I think you'd be quicker to write simple console app to load the XMLs via standard C#/Perl/Ruby/Python libraries, patch the texts, and write them back to files instead of searching for a scriptable tool, but maybe I'm wrong. I'd be happy to see such tool too! :)
-- edit:
With pure .bat batch files, it may be hard, because the Windows Console simply lacks proper string-replace commands and you have to use some tricky commands like see the BAT here.. At least small tool like grep or sed would be handy, and the script would be 100% more flexible.
You can rather easily do it with PowerShell, CygWin, Ruby, etc or even the JScript/VBScript that you should already have installed along with your Windows. See here for a such a script in VBS. It scans only a specific directly witout subfolders, but you can easily mix it with this sample to get recursive directory walking. Btw. VBS is kept in files of such extension: myscript.vbs and may be simply double-clicked or simply run just like .bat or .exe files.
All of this however are more like typical programming.. If you have some complex renames to do and if you dont have any Python/Ruby/blargh at hand, I'd recommend just writing it in C# as the code will be friendlier.

Temporary debug releases and final application releases

I have a quick question regarding debug and release in VS 2008.
I have an app i've been working on - its not yet complete but the bulk of the functionality is there. So basically i'm trying to give a copy of it now to the person helping with documentation - just so they can have a play and get the feel for what i've made.
Now the question is how to provide it to them. I was told to just copy the .exe out of the debug/bin folder and put that onto USB. But when testing, if I run this .exe anywhere else (outside of this folder) it crashes. I've now worked out why this is:
var path = ConfigurationManager.AppSettings["PathToUse"];
var files = Directory.GetFiles(path);
throws a null reference, so that App.config file is not being used. If I copy that file in with the .exe it works again.
So actually my question is regarding the best way to manage this situation. What is the best way to provide a working copy to people, and, is there a reference on preparing apps for release - so everything is packaged together and installed in a clean structured folder heirarchy?
If you want to be safe grab everything in the debug/bin folder. If you use the drop down in VS to change to release and then compile the project, there will be fewer files in the release/bin folder because many debug related files are not included.
If there are third party DLLs you are referencing, like if you downloaded log4net or something like that, then you can simply put them in the same folder as the exe. This is called side-by-side deployment, and in my opinion is the simplest and easiest to test.
You can search for XCOPY deployment to learn more about what you are trying to do.
You can take another step of compressing the bin folder into an archive like a zip file to make it easy for the user to extract them, or you could use a tool like WIX or NSIS to create an installer to extract and copy the files.

Categories