2 projecten in 1 solution met een gezamenlijke bin folder?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • MasterTweaker
  • Registratie: Maart 2010
  • Laatst online: 12-09 18:01
Ik ben bezig met een projectje in Visual Studio 2008 waarbij ik 2 projecten aangemaakt heb in dezelfde solution explorer.

Nu wil ik vanuit het eerste project de .exe file van het andere project aanroepen vanuit het programma. Maar dit werkt nu dus niet. Dit komt volgens mij omdat beide projecten nu wel in dezelfde solution staan maar niet een gezamenlijke bin folder hebben.
Is het mogelijk dat ze wel dezelfde bin folder hebben zodat de .exe file aangeroepen kan worden vanuit het andere programma.?

En als dit niet mogelijk is hoe roep ik dan de .exe file op? Ik heb de syntax nu goed geschreven maar toch opent dat andere programmaatje nu niet.

Iemand een idee? Alvast mijn excuses mocht dit topic niet aan de tweakers "policy" voldoen. :)

Acties:
  • 0 Henk 'm!

  • Laurens-R
  • Registratie: December 2002
  • Laatst online: 29-12-2024
Je zou in de properties van je projecten, de output folder kunnen aanpassen.

Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 08:42

Haan

dotnetter

Laat dan eens wat code zien waarmee je het nu probeert op te lossen? Je zegt 'ik heb de syntax nu goed geschreven', maar dat geloven we pas als je het hier laat zien ;)

Maar wat wil je precies bereiken met het 'aanroepen' van het ene programma met het andere? Je weet dat je in een project ook een reference naar een ander project in dezelfde solution toe kan voegen?

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • boe2
  • Registratie: November 2002
  • Niet online

boe2

'-')/

En als dit niet mogelijk is hoe roep ik dan de .exe file op? Ik heb de syntax nu goed geschreven maar toch opent dat andere programmaatje nu niet.
Met Process.Start() zal het wel lukken, maar ik vraag me af of je niet gewoon eerder een gedeelde library wil maken ipv een aparte executable die je dan uit een ander programma oproept?

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind.' - Pratchett.


Acties:
  • 0 Henk 'm!

  • jip_86
  • Registratie: Juli 2004
  • Laatst online: 09:21
Je kan toch gewoon het pad van die andere exe opgeven? Daar is echt niet dezelfde bin map voor nodig.

Acties:
  • 0 Henk 'm!

  • MLM
  • Registratie: Juli 2004
  • Laatst online: 12-03-2023

MLM

aka Zolo

1) rechtsklik op je project, properties
2) ga naar output path, zorg dat die hetzelfde staan (en relatief aan $(SolutionDir) )
3) build
4) ...
5) profit

-niks-


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Mijn eerste gok is dat je ontwerp iets te wensen overlaat. Vertel eens iets meer over de gedachtegang waarom je twee executables nodig hebt waarbij de 1 de ander aanroept. Het kan een geschikte keuze zijn, maar je lijkt nog aan het begin van je programmeercarriere te staan (nog zo'n gokje ;)), dus een foutje is snel gemaakt.

Acties:
  • 0 Henk 'm!

  • MasterTweaker
  • Registratie: Maart 2010
  • Laatst online: 12-09 18:01
bigbeng schreef op woensdag 07 april 2010 @ 15:28:
Mijn eerste gok is dat je ontwerp iets te wensen overlaat. Vertel eens iets meer over de gedachtegang waarom je twee executables nodig hebt waarbij de 1 de ander aanroept. Het kan een geschikte keuze zijn, maar je lijkt nog aan het begin van je programmeercarriere te staan (nog zo'n gokje ;)), dus een foutje is snel gemaakt.
Het werkt als volgt:
Ik heb een programmaatje dat gewoon uit een windows form bestaat waarbij je als je op een bepaalde knop drukt er zich dan een proces start waarbij een klein tweede schermpje geopend wordt waar je het een en ander kan aanpassen. De code van deze knop ( deze button heet f1edit ) die dit tweede process opstart is hieronder te zien:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Private Sub f1edit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles f1edit.Click
        'Als het totaalbedrag 0 is betekend dat er nog niets besteld is dus kan er ook nog niet veranderd worden
        Try

            If Totaalbedrag = 0 Then
                MsgBox("Please order wood first", MsgBoxStyle.Critical, "Error")
            Else

                Dim myProcess As Process = System.Diagnostics.Process.Start("\899Q6_1.exe")
                myProcess.WaitForExit()

                Totaalbedrag = 0
                'Declaraties
                Dim FileName As String = "orders.txt"
                Dim Filenumber As Integer = FreeFile()
                Dim ListIndex As Integer
                Dim ChangedOrder(3) As String
                Dim Article(3) As String
                'orders.txt wordt geopend en er wordt gekeken naar veranderde gegevens
                'Als er gegevens zijn veranderd worden deze ook veranderd in het 899Q6
                Try
                    FileOpen(Filenumber, FileName, OpenMode.Input)
                    While Not EOF(Filenumber)
                        ChangedOrder = Split(LineInput(Filenumber), ";")
                        ListIndex = ListBox1.FindString(ChangedOrder(0))
                        If ListIndex <> -1 Then
                            Article = ListBox1.Items.Item(ListIndex).Split(";")
                            Article(3) = CStr(ChangedOrder(3)).PadLeft(3)
                            ListBox1.Items.Item(ListIndex) = Join(Article, ";")

                            'Het nieuwe totaalbedrag wordt berekend
                            Totaalbedrag = Totaalbedrag + ((ChangedOrder(2) * ChangedOrder(3)) / 100)
                        End If
                    End While
                Catch
                Finally
                    'Het bestand 'orders.txt' wordt gesloten
                    FileClose(Filenumber)
                    'Het nieuwe bedrag wordt weergegeven op 899Q6


                    f1total.Text = "Total of orderlist: € " & Totaalbedrag.ToString(Format("0.00"))
                End Try
            End If
        Catch
            MsgBox("Kan programma 899Q6_1.exe niet opstarten. Heeft u deze in dezelfde directory als het hoofdprogramma staan!? ", MsgBoxStyle.Critical, "Error")
        End Try
    End Sub


Deze code in de code hierboven:
code:
1
2
Dim myProcess As Process = System.Diagnostics.Process.Start("\899Q6_1.exe")
                myProcess.WaitForExit()


moet er dus voor zorgen dat dat proces gestart wordt. Maar nu geeft hij dus die msgbox weer van "kan programma 899Q6_1 niet opstarten"

Ik kan toch gewoon alleen zeggen "899Q6_1.exe" en hoef hier toch niet het hele pad naar deze file aan te geven zolang de file in dezelfde map staat?

Dit is toch ook een correcte manier om een proces aan te roepen?

Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 01:10
• Maake een reference naar het benodigde project
• Pas je output path aan
• Maak een build action aan
Opties te over, aan jou om te beslissen wat in dit geval de beste manier is

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Ik zie nog steeds geen redenering waarom je een aparte executable nodig hebt. Waarom is het tweede form dat je probeert te openen geen onderdeel van hetzelfde project?

Verder zie ik dat je een backslash voor de executable naam hebt gezet op regel 9 in jouw voorbeeld. Die code gaat dus proberen in de root van de drive waarop je hoofdprogramma staat de andere executable te openen.

Acties:
  • 0 Henk 'm!

  • MasterTweaker
  • Registratie: Maart 2010
  • Laatst online: 12-09 18:01
bigbeng schreef op woensdag 07 april 2010 @ 16:31:
Ik zie nog steeds geen redenering waarom je een aparte executable nodig hebt. Waarom is het tweede form dat je probeert te openen geen onderdeel van hetzelfde project?

Verder zie ik dat je een backslash voor de executable naam hebt gezet op regel 9 in jouw voorbeeld. Die code gaat dus proberen in de root van de drive waarop je hoofdprogramma staat de andere executable te openen.
Nu ik die backslash weg gehaald heb opent hij het proces. :)
En ik begrijp inderdaad dat je beter gewoon in hetzelfde project een tweede formulier aan kan maken om die dan vervolgens aan te roepen, maar het moet volgens die opdracht op deze manier.

Eerst had ik het ook gewoon via een formulier gedaan maar toen kreeg ik de opdracht terug omdat dit niet voldeed. :')

Acties:
  • 0 Henk 'm!

  • NickThissen
  • Registratie: November 2007
  • Laatst online: 09-09 10:50
Wat zegt de opdracht dan precies? Het lijkt me eerder dat je tweede project een class library (of iets dergelijks) moet zijn, wat in plaats van een executable een DLL aanmaakt. Je kan dan die DLL gebruiken door een referentie naar je tweede project toe te voegen (dus niet rechtstreeks naar de DLL!). Dit doe je door in 'Add Reference' te kiezen in het rechtermuis menu van je eerste project. In het venster wat dan getoond word is een tabje 'Projects', en daarin staat je tweede project als het goed is.

Dit lost al je problemen op; de solution zorgt ervoor dat de juiste DLL gebruikt wordt, je hoeft niet meer rechtstreeks naar een executable te linken, etc.

Als je tweede project nooit apart gerunned hoeft te worden is het niet nodig om daar een executable van te laten maken.

[ Voor 14% gewijzigd door NickThissen op 07-04-2010 17:23 ]

Mijn iRacing profiel


Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 08-09 11:33
(even een klein dingetje, met de juiste using statements can ook een class library / dll gewoon forms hebben, je moet trouwens ondanks dat je projecten in de beide solution zitten toch een reference toevoegen van je hoofdprogramma naar het 2e programma (grijze mapje)).

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Post de opdracht eens dan? Beetje vreemd dat je een 2e proces moet starten, tenzij dat nu de opdracht is maar dan had je dat wel expliciet gemeld lijkt me.

https://niels.nu

Pagina: 1