Newsgroup: it.comp.dotnet
Titolo: Path relativi inun file .csproj

Ciao a tutti,
per poter eseguire nunit.exe "dentro" al debugger di Visual C# Express 
ho optato per questa cosa qui:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 
'Debug|AnyCPU' ">
	...
	<OutputPath>..\..\test\</OutputPath>
	<DefineConstants>DEBUG</DefineConstants>
	<ErrorReport>prompt</ErrorReport>
	<WarningLevel>4</WarningLevel>
	<StartAction>Program</StartAction>
	<StartProgram>..\..\test\nunit.exe</StartProgram>
	<StartArguments>MiaLibreria.dll</StartArguments>
</PropertyGroup>
L'eseguibile di NUnit con tutte le librerie necessarie sono già state 
copiate in ..\..\test, tuttavia il debugger di VisualStudio doce che 
"the debug target ..\..\test\nunit.exe is missing", anche se non è così.
Ho provato con $(OutputPath) ma la storia non cambia. Funziona solo se 
metto il path assoluto. Ma questo è un *danno* perché ovviamente ogni 
sviluppatore del team ha il progetto dove vuole lui. :-)
Come posso fare?
Grazie,
Giulio
-- 

 target ..\..\test\nunit.exe is missing", anche se non è così.
A naso mi sembra che manchi un "..\", ad ogni modo taglia la testa al 
toro e usa procmon (parte di sysinternals) per vedere dove viene 
cercato il file.
-- 
Raffaele Rialdi  
http://www.iamraf.net
Weblog: 
http://blogs.ugidotnet.org/raffaele
Microsoft MVP profile 
https://mvp.support.microsoft.com/profile/raffaele
UGIdotNET - 
http://www.ugidotnet.org/

 il file.
Fatto.
Ho filtrato tutte le entry per il processo vcsexpress e con result 
diverso da success. Pare che ..\..\test\nunit.exe sia cercato in: 
C:\Program Files\Microsoft Visual Studio 10.0\test\nunit.exe
Il che, mi sembra abbastanza strano...
Ciao,
Giulio
-- 


Prova a vedere se questo e' rilevante:
http://social.msdn.microsoft.com/forums/en-US/msbuild/thread/066abee0-b20c-4c57-a337-061e38f83490
(Se quel link non funziona, questo dovrebbe:  
http://tinyurl.com/4c7r2yj
)
-LV


Basta che metti $(qualcosa)\..\.. e dovresti andare a posto.
Il path program files lo mette perché riparte dall'exe e non dal 
progetto


 Il path program files lo mette perché riparte dall'exe e non dal progetto
La mia entry nel file .csproj è:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 
'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
     <OutputPath>..\..\test\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
     <StartAction>Program</StartAction>
     <StartProgram>$(OutputPath)nunit.exe</StartProgram>
     <StartArguments>Blablabla.Test.dll</StartArguments>
   </PropertyGroup>
Il file viene cercato sempre in; C:\Program Files\Microsoft Visual 
Studio 10.0\test\nunit.exe
Ciao,
Giulio
-- 

 10.0\test\nunit.exe
Ho fatto una prova e le var di progetto non funzionano.
Purtroppo non vanno neppure quelle di environment, quindi credo che ti 
resti solo il mettere in PATH nunit.


 resti solo il mettere in PATH nunit.
Mi fido ciecamente di te ma... faccio davvero fatica a pensare che sia 
così. :-)
O gli sviluppatori di VS hanno fatto un #FAIL clamoroso, oppure mi/ci 
sfugge qualcosa.
Ciao e grazie,
Giulio
-- 

 
http://social.msdn.microsoft.com/forums/en-US/msbuild/thread/066abee0-b20c-4c57-a337-061e38f83490
Gli ho dato una letta ma non è che ci abbia capito granché. :-p
Potresti darmi qualche chiarimento ulteriore?
Grazie,
Giulio
-- 

 Potresti darmi qualche chiarimento ulteriore?
E' qualcuno che sembra avere lo stesso problema.
La soluzione indicata da Hashimi (quella marcata come answer)
suggerisce di spostare le dichiarazioni (penso si riferisca appunto al
blocco PropertyGroup) *dopo* il blocco contentente l'Import Project="$
(MSBuildBinPath)\Microsoft.CSharp.targets".
Notavo anche che lo user in questione ha uno StartProgram del tipo $
(ProjectDir)$(OutputPath)$(ProgToStart), mentre tu avevi $
(OutputPath)ecc. solamente.
Di nuovo, non sono in grado di dirti se e quanto sia rilevante,
d'altra parte e' una rapida prova...
In bocca al lupo,
-LV

 (MSBuildBinPath)\Microsoft.CSharp.targets".
Si, ci ho provato ma... non compila. :-)
Pensavo infatti di aver toppato qualcosa.
Ciao,
Giulio
-- 

 qualcosa.
Gli strumenti come nunit sono relativamente giovani e poco utilizzati
Vs.net inoltre bada ovviamente di più agli strumenti integrati.
Infine la path assoluta è "solo" una scocciatura che affligge anche in 
molte altre situazioni.
Trovo allora più "clamorosa" il fatto di non poter utilizzare un 
progetto con più versioni di visual studio, specie quando il sorgente è 
sotto source control. Crossing fingers x vNext ;)


Ciao a tutti,
On 1/20/2011 11:52 AM, Giulio Petrucci wrote:
[cut]
Vi farò breve quanto scoperto leggendo qui:
http://www.rhyous.com/2010/04/16/how-to-use-relative-paths-when-debugging-in-visual-studio-2008/
Se aprite la solution cliccando sul file .sln, è ok perché il percorso 
di partenza sarà quello del file .sln. Se invece aprite VisualStudio e 
poi caricate la solution, siete fregati.
Mi chiedo: possiamo parlare di bug oppure è una feature (e a questo 
punto vorrei parlare con chi l'ha richiesta per capirne i motivi)?
HTH,
Giulio
-- 


A mio avviso il comportamento è by design perché cliccando sul sln stai 
solo impostando la working directory alla cartella che contiene il file 
sln.
Il problema che hai tu è che non riesci ad usare le var di progetto 
nella dialog che lancia l'exe. L'exe infatti (come tutti gli exe) 
prende la working directory corrente (a meno che non sia specificata 
diversamente) e di conseguenza hai il comportamento che vedi.
Se vuoi usare questo sistema (cosa che ti sconsiglio) dovresti ottenere 
lo stesso comportamento creando uno shortcut impostando la working 
directory alla cartella della solution.


 nella dialog che lancia l'exe.
Di quale dialog stiamo parlando?
Ciao,
Giulio
-- 


Proprietà del progetto - debug - dove indichi qual'è l'exe da lanciare 
quando avvii il progetto da 
vs.net


 quando avvii il progetto da 
vs.net
No, sono sulla express e quella cosa non si può fare.
Lo metto a mano nel .csproj (comunque la sostanza non dovrebbe cambiare).
Ciao,
Giulio
-- 

 Lo metto a mano nel .csproj (comunque la sostanza non dovrebbe cambiare).
ops, non conosco la express, sorry.
concordo che non dovrebbe cambiare nulla.


 concordo che non dovrebbe cambiare nulla.
Ho fatto un paragone Express VS Pro ed effettivamente mi pare scrivano 
le stesse cose. Comunque l'ho fatto un po' di tempo fa e non sono più 
tanto sicuro.
E già che ci sono, provo pure con SharpDevelop. :-)
Ciao,
Giulio
-- 

 E già che ci sono, provo pure con SharpDevelop. :-)
bravo bravo prova e poi posta :)


 bravo bravo prova e poi posta :)
Lo farò. :-)
Ciao,
Giulio
-- 

 Lo farï¿œ. :-)
:)
byez
