hi, i want to automate visual studio 2015 from an external VBA to build a solution, and i do not know what should i do , automate directly vs compiler or i should automate IDE, who can help me with advice and source code
yosri.bensalah@outlook.fr

Recommended Answers

Don't know exactly what you mean by "automate visual studio", but these might help.

Jump to Post

You can run devenv.exe and build your project from the command line. Type

devenv /?

to get the command line arguments/switches. You'll have to spawn it as an external process. Use the vba Shell call to do that

ret = Shell("command line with args", vbNormalFocus)
Jump to Post

I see you need to get your command line working then we can share that command and help you put that into your Line 2.

Jump to Post

Try Shelling devenv instead of test.bat

Jump to Post

Back to my question. If you want to know how long it takes to do the add, doing it through vba is pointless. Just run the executable directly. Also, you are just going to get a value of 0 for testing one addition. Even if you put in a loop …

Jump to Post

All 31 Replies

Re: visual studio automation 80 80

Don't know exactly what you mean by "automate visual studio", but these might help.

Re: visual studio automation 80 80

i want to launch visual studio , open solution build project , all from an external VBA(visual basic for application ) , i dont know if it is the best solution or i can directly automate Vs compiler without starting the IDE

Re: visual studio automation 80 80

automate Vs compiler ( commande line ) to build my solution

Re: visual studio automation 80 80

i mean by automate vs that i want to open launch vs,open solution , build it

Re: visual studio automation 80 80

You can run devenv.exe and build your project from the command line. Type

devenv /?

to get the command line arguments/switches. You'll have to spawn it as an external process. Use the vba Shell call to do that

ret = Shell("command line with args", vbNormalFocus)
Re: visual studio automation 80 80

thank you jim , but can you explain more plz gger.png
i want to automate visual studio compiler to build in tha hard disk visual studio solution all from external VBA

Re: visual studio automation 80 80

I see you need to get your command line working then we can share that command and help you put that into your Line 2.

Re: visual studio automation 80 80

i put the devnex , batch file and the solution in the same folder "c:\Program Files\Microsoft Visual Studio 14.0\Common7\IDE"
bati.png
batii.png
this is the code of batch file :
echo off

call "C:\Program Files\Microsoft Visual Studio 14.0\VC\bin\vcvars32.bat"
"c:\Program Files\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ConsoleApplication8.sln"" /build

pause

it briefly cmd window appear and displays the error below , i dont why it is not visual studio widow that appear
any help pls

Re: visual studio automation 80 80

Read the message. It says you have a syntax error. I tried

devenv clipjpg.sln /build

on one of my projects and it compiled/built the executable with no problems.

Re: visual studio automation 80 80

this is my batch file :
echo off

call "C:\Program Files\Microsoft Visual Studio 14.0\VC\bin\vcvars32.bat" x86
devnev.exe /build Release "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ConsoleApplication8.sln"

pause
and this is VBA command fs.png
when i compile VBA project it displays that devnev.exe is not know as an internal command qsdv.png
i wanted that VS command prompt which compile the solution not "cmd"

Re: visual studio automation 80 80

i make some modification but i displays command window without building
rfvrv.png zdcv.png

Re: visual studio automation 80 80

Try Shelling devenv instead of test.bat

Re: visual studio automation 80 80

yes it starts visual studio sqcdbf.png

Re: visual studio automation 80 80

i had application build with visual studio and a text file that store time process,
please what is the deffiernce to execute an application build with visual studio , what is the differnce to execute it directly with 2 click and via shell command, because when i execute it via shell VBA the time process in text file does not be modified

Re: visual studio automation 80 80

I'm not clear on what you are asking but my usual approach when trying to automate something is to do it in stages rather than jumping immediately to the final step. What you are trying to do (from what I gather) is

vba -> batch file -> devenv -> build solution

The first thing I'd do is try running the build directly from the command line

"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" "d:\my\Documents\Visual Studio Projects\ClipToJPG\ClipToJPG.sln" /build

then check to make sure the solution executable has been created. Once you know that works you can try shelling the same command line from within VBA (delete the solution executable first so you can see if it has been recreated).

Then you can create a simple batch file to do something like launch an app (like calc). Make sure this runs from the command line, then try to execute it from VBA. This will show that you can execute a batch file.

Once that works, try creating a batch file to execute the same vb.net build (although I don't see why you need to add this complication). Try running that from within VBA.

The trick (if you can call it that although it's just basic troubleshooting) is to see where the problem is. If you just throw all the parts together and it doesn't work then it's hard to figure out which part is the problem.

Re: visual studio automation 80 80

thak you Dr jim, my aim is to build a visual studio solution and run run exe application from VBA, i used batch file in order to lauch Vs compiler , i dont know if it is possible directly through VBA or not , if it is possible let me know to avoide this compilcation pls ,
2) i did what you suggest and it helps me to resolve the problem thank you , but i have an other other question pls , the application that i talk about above store the execution time in a text file fb.png , so when i double clicked it it works normally and store the time process in the text file , but when i use shell command the app is run (result on cmd command ) gger.png but i didn't store the time process in the text file, how can you explain this thank you ,

Re: visual studio automation 80 80

i used batch file in order to lauch Vs compiler

I still don't understand why you are doing that.

i dont know if it is possible directly through VBA or not

I don't have Microsoft Office so I can't test this so I suppose the best way to find out is to follow my steps above. Make a small test VBA that does nothing but run an exe.

but i didn't store the time process in the text file, how can you explain this

I can't. Mostly because your console application (which somehow has a form) is a black box and you didn't post the code. If you are going to give me the information I need to help in bits and pieces then one of two things is going to happen

  1. You might get an answer but it wiull take a very long time.
  2. I'll get tired of asking for more information and I'll just quit helping.
Re: visual studio automation 80 80

dr Jim , the whole story in this document

Re: visual studio automation 80 80

Can you build the exe file from the command line?

Can you build the exe file using the same command but from within vba via the Shell command?

Re: visual studio automation 80 80

i tried to to build solution through VBA shell a.png
aa.png
it just start Visual studio and got this error msg aaaa.png

Re: visual studio automation 80 80

dr my aim is to command visual studio compiler via VBA ( idon't have idea it is possible through shell command, batch file file ...) to build visual studio solution directy without the need to start VS IDE because starting IDE , loading solution , building it took too much time.
any need pls

Re: visual studio automation 80 80

The command line you are executing with Shell has spaces in it so you have to add extra quotes just like you would if you were running it from the command line. For example, if you ran the following from the command line

C:> C:\Program Files\Folder\test.exe arg1

you would get an error so you would have to type it as

C:> "C:\Program Files\Folder\test.exe" arg1

Inside vba you would have to do

ret = Shell("""C:\Program Files\Folder\test.exe"" arg1", vbHide)
Re: visual studio automation 80 80

As an afterthought, I still don't understand why you want to do this through vba. Who cares if it takes a while to build it theough the IDE? You only have to do that when the source code changes. You only have to automate something when it has to be done repeatedly. And if you are going to do it through vba, starting your vba app is going to be a manual process anyway (most likely) so what have you gained by adding in the extra step?

Re: visual studio automation 80 80

Maybe the intentions of the OP are noble. But do I smell something like a virus?

Re: visual studio automation 80 80

Possibly. I can't see anything useful in what OP is trying to do, but there is nothing overtly malicious either. I'm basically just trying to show him how two simple things work. At this point I think I'll just give up.

Re: visual studio automation 80 80

dr ddanbe im a debutant student in embedded system field and i dont know of what virus you talk about , im sorry for the disturbance i ask for help because it the first time that i deal with VBA , my VBA is integrated in excel software i wanted to get time process of an adder (i told the you the code source dr jim in a doc file ) and store process time in text file,
this is my attempt dr jim
scdbfgn.png
i found that you are right there is no meaning for rebuilding the same solution with same code source,
from the begining as you remmber i ask to share screen to avoid misunderstanding im sorry, i ask you for the last time dr jim pls can help explain nad help me this problem when i double clik on my application the time process is stored on the text file 1.png
but when i shell the same application through VBA it run but no time process stored 2.png
this is my code source for the application as you see its an adder that store process time

1222.png
what should i do force shelling storing process time on text file thank you deeply

Re: visual studio automation 80 80

Back to my question. If you want to know how long it takes to do the add, doing it through vba is pointless. Just run the executable directly. Also, you are just going to get a value of 0 for testing one addition. Even if you put in a loop to do the operation a million times you won't be able to distinguish between the time it takes to do the addition and the time spent on the rest of the loop processing.

As for writing the text file, try putting the full path and file name of the file you want to write. It's entirely possible the file is being created, just not where you expect it to be.

Re: visual studio automation 80 80

i try your suggestion dr Jim as you see follow the solution is buils with but with problem PDB not found also text file on the specified folder D:\toto.txt is empty
cver.png ejec.png

Re: visual studio automation 80 80

i thank you deeply for your help , especially Dr Jim :) :) i come to solve my problem :) thanks to God, i add instructon that create file and store simulation time rrr.png
Dr Jim i would be happpy if we keep in touch if it is possible, my email yosri.bensalah@outlook.fr
whish all the best for you :)

Be a part of the DaniWeb community

We're a friendly, industry-focused community of 1.19 million developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.